Flutter是谷歌的发明。Flutter 的主要独特功能之一使程序员能够使用相同的代码库来创建可在浏览器和移动设备上运行的应用程序。如果您的预算紧张,并希望降低接触移动和网络用户的成本,这可能是一个不错的选择。
React Native是Facebook于2015年3月创建的移动应用程序框架。如果你在 React 中使用它,交付 Web 和移动应用程序是小菜一碟。React Native 创建者对代码重用的承诺提供了构建可在应用程序不同部分使用的组件的可能性。测试后,如果在系统的不同部分重用应用程序组件,则不太可能引起一些麻烦。因此,产品的整体质量也提高了。
Flutter 和 React Native:并排比较
数字有力量
假设您想聘请一家提供跨平台应用开发服务的公司。在这种情况下,除了物有所值之外,还有其他重要因素。例如,人们应该记住,找到高技能的程序员来构建应用程序只是工作的一半。同样重要的是确保有足够的专家对特定技术感兴趣。在这种情况下,您将毫不费力地找到某人在发布后的几个月和几年内维护该应用程序,这将保证您的业务繁荣。如果用户在您的应用上遇到问题,您必须快速做出反应,以确保他们不会去找您的竞争对手之一。
根据StackOverflow 2021 开发人员调查,React Native 和 Flutter 是最可爱的技术之一:
前一年,它们也很受欢迎,但结果要谦虚得多:
这种动态表明,程序员不会随着时间的推移而放弃这些技术。越来越多的人倾向于学习 React Native 和 Flutter。此外,Statista 还显示Flutter 在 2021 年取得了惊人的成果。在这场竞争中,React Native 被超越了 4%,这仍然使其成为最受欢迎的技术之一:
目前,无论您决定使用 React Native 还是 Flutter 作为技术堆栈的一部分,您都不会面临发烧友的短缺。目前,他们将正面交锋,很难预测谁会在一两年内赢得这场比赛。我们可以肯定的是,开发人员不会对更成熟的技术和市场上相对较新的参与者失去热情。
社区事务
当我们谈论社区时,我们的意思不仅仅是那些试图构建移动应用程序并认为这种或那种技术看起来很有前途的人。我们通常是指愿意为发展做出贡献的人。例如,活跃的社区构建库并创建有助于跟踪错误的 GitHub 问题。
这两种技术都有庞大的社区。为了正常运行,他们需要沟通渠道来向专家提问、报告错误、对最近的更改做出反应以及请求功能。如今,允许开发人员满足这些需求的最广泛使用的资源是StackOverflow和GitHub。2022 年 3 月,这些资源的使用情况统计信息如下:
反应原生
扑动
堆栈溢出问题
123,951
119,168
GitHub 问题
1,857 (20,577 已关闭)
10,338 (55,524 已关闭)
GitHub Stars
101,542
137,272
GitHub 分叉
21,844
21,013
此信息表明每个团队都非常活跃,准备学习并愿意做出贡献。
编程语言
Flutter使用Google于2011年首次推出的Dart。如果您从未听说过它,请不要感到羞耻。在相当长的一段时间里,它仍然很不受欢迎。小蝶出现在舞台上后,一切都变了。如果您想使用它来构建移动应用程序,您将面临最少的障碍。Dart 文档很全面,涵盖了开始创建所需的所有主题。
React Native 使用JavaScript,保留了世界上最流行的编程语言的桂冠。在某种程度上,当需要深入研究移动应用程序开发时,学习一门新的编程语言是零必要性的,这在 React Native 的手中发挥了作用。
应用开发速度
如果应用程序质量是您的主要优先事项之一,那么没有理由急于求成。毕竟,总是击败比赛。幸运的是,今天的两项技术最初都是为了在不牺牲任何东西的情况下减少应用程序构建时间而设计的。
Flutter 和 React Native 具有热重载功能,这是一个真正的游戏规则改变者。如果应用的源代码发生更改,开发人员不必等到应用编译完成。所有代码更改都将立即影响应用程序。如果出现错误,它有助于快速做出反应,并在不牺牲截止日期的情况下为实验开辟广阔的领域。
但是,由于Dart并不那么普遍,因此缺乏IDE和文本编辑器支持可能会使第一次使用它的人感到不安。在撰写本文时,Dart提供了对Android Studio,Visual Studio Code和IntelliJ IDEA插件的访问。此外,还有社区为Emacs,Vim和Eclipse构建的插件。由于缺乏 Dart 支持,需要重新考虑熟悉的工具集是时间损失的潜在来源。如果我们看看 React Native,情况更有利于不受阻碍的开发。原因很简单:JavaScript无处不在。
谁更快?
没有什么比在匆忙时遇到应用程序滞后更令人沮丧的了。如果您花三分钟而不是两分钟订购杂货送货上门,可能不会发生任何坏事。但在某些情况下,糟糕的应用性能可能会欺骗您。例如,GPS 导航仪在准确确定您的位置时遇到问题可能会导致您错过右转弯并在重要的商务会议上迟到。必须确保你的应用在眨眼间对用户的操作做出反应,让他们满意。
大多数情况下,Flutter 应用程序表现出更好的性能。React Native 的架构施加了限制,无论您的程序员多么有才华,都无法绕过这些限制。原因是用这个框架构建的移动应用程序面临着处理来自两个世界的现象的需求:JavaScript和原生元素。要使应用程序正常工作,需要 JS 代码与特定于给定移动设备的元素之间的桥梁。建造桥梁需要资源。
与 React 不同,Flutter 支持使用名为 Skia 的图形机器。Skia 的原生桥架构允许程序员绕过可能出现的问题,这些问题会导致我们在谈论跨平台开发时出现的最明显的问题:我的应用程序会和原生应用程序一样快吗?在这种情况下,无需担心。颤振应用程序显示出高性能。与本机应用程序相比,大多数最终用户不会看到任何差异。
另请阅读移动优先。方法的本质及其受欢迎程度的原因
包
当您聘请经验丰富的开发人员来提升您的业务时,您很可能不希望他们花太多时间在实施琐碎的事情上。相反,您想要的是确保花费的每一分钱都能构建出令人惊叹的功能,从而给您的客户留下深刻印象。套餐的可用性是决定这个愿望是否会实现的确切因素。
当 Flutter 应用程序开发人员想要更快地创建内容时,他们会使用pub.dev存储库。不幸的是,包裹的总数相对较小。例如,节点包管理器(npm)早已超过了一百万个包的里程碑。并非所有这些包最初都是为 React Native 创建的,但要使特定包适应特定需求并不需要太多努力。
请记住,npm 在构建 React 应用程序时需要尽职调查。更新时,多个第三方依赖项可能会导致问题。尽管如此,每个网络和移动应用程序开发人员都很清楚这些问题,因此如果您与经验丰富的团队打交道,则没有理由担心。如果我们快速浏览一下 GitHub 存储库,我们还会注意到Flutter的生态系统与React Native的生态系统相比要丰富一些:
反应原生
扑动
GitHub 存储库
283,412
349,659
npm/pub.dev 包
1,000,000+
23,862
结论
在 Flutter vs React Native 竞赛中没有明显的赢家。虽然 Flutter 是一个新来者,但没有人可以称之为不成熟的技术。React Native 已经是一个纯粹的经典。有了足够的经验,React Native 和 Flutter 都可以投资创建其行为和性能与原生应用程序无法区分的移动应用程序。不过,有一个重要的问题需要考虑。在您投资 Flutter 应用程序后,您是否能够找到一个在 Dart 方面具有足够经验的团队来维护它并添加新功能?我们认为只有未来会告诉我们。