跨平台程序员之间对于 React Native 和 Flutter 的旷日持久的争执越来越白热化了。前几年,React Native 还是开发人员的首选框架,然而自 2017 年 Flutter 公布以来,其曾经倒退成为 React Native 的一个强有力竞争对手。
最近,随着许多初创公司抉择了 Flutter 用于 MVP 开发,React Native 正在面临来自 Flutter 的强烈竞争。那么问题来了,哪种利用开发技术将在 2022 年取得成功呢?
Flutter 利用的劣势
- 热重载 = 疾速编码
Flutter 容许开发人员应用一种更简单、更疾速的形式来创立应用程序。这是 Flutter 的最大劣势之一,也是所有顶级挪动利用开发公司都颇为看重的。
开发人员能够实时对代码库做出改良,并立即看到这些改良反映在申请中。这就是所谓的“热重载”个性,更改通常只需几毫秒就能显示进去。
这一性能让团队能够疾速增加性能、修复谬误和测试新想法。前端培训此外,当团队须要通过合作来放慢开发速度时,热重载用起来十分棘手。
- 实用于多个挪动平台的繁多代码库
Flutter 容许开发人员为两个利用只编写一个代码库——一个针对 iOS,另一个针对 Android。因为 Flutter 具备本人的模板和布局,它的操作系统无关的平台意味着开发人员能够在两个不同的零碎上应用雷同的性能,同时放弃每个利用都有本人独特的款式、可用性和性能。
Flutter for Web 是由谷歌开发的,为开发人员提供了必要的信用保障。一旦应用程序上线,就能够用单个代码库反对 Android、iOS 和 Web 平台。
- 与 React Native 相比,须要的测试只有一半
因为你将在两个平台上测试雷同的程序,因而质量保证流程做起来会快得多。咱们编写了的自动化测试量只有一半,因为在两个平台上能够编写雷同的测试,这样就最大水平地缩小了质量检查团队的工作量。
然而,因为你的质量检查专家必须手动查看每台设施上的利用,因而须要进行与原生编程类似级别的手动测试。
为什么有人会更喜爱 React Native 而不是 Flutter?
- 疾速刷新 = 疾速编码
它具备与 Flutter 雷同的个性。热重载放慢了开发过程,并容许程序员将新代码直接插入正在运行的应用程序中。这样开发人员无需从新构建应用程序即可立即看到改良。
热重载能够保留应用程序的状态,并防止了在齐全重载期间失落它的危险(就基于状态的框架而言,这是一大劣势)——这进一步放慢了挪动应用程序成长的速度。
- 一个代码库,两个挪动平台(甚至更多!)
就像 Flutter 一样,你只需编写一个代码库即可运行两个应用程序,一个跑在 Android 上,一个运行在 iOS 上。西安前端培训更好的一点是,因为用的是 JavaScript,所以你在开发跨平台应用程序时能够和 Web 利用共享代码。你只需应用可对特定平台编译的形象模块即可。
请参阅以下示例,理解可让你同时在 iOS 和 Android 及其他零碎(包含 Web 和桌面利用)上编程的库:
React Native for Web 是一个跨平台利用,反对 Android、iOS 和 Web(Twitter 应用它来创立 Twitter Lite)。
ReactXp——Skype 开发的一个利用,反对 Android、iOS、互联网和 Windows 10(UWP)。
微软团队为所有 Windows 10 用户(PC、平板电脑、二合一、Xbox、混合事实设施等)创立了 React-native-windows。
React Native 程序员对事物的认识和采取的口头与大多数人是不同的。
你能够假如 Web 桌面利用、挪动 Web 利用和原生利用都具备雷同的业务逻辑,然而它们须要不同的 UI 能力满足不同的用户需要。
- 它应用了风行的编程语言——JavaScript
React Native 应用的是 JavaScript 这种罕用的编程语言,而 Dart 尚不为人所知。如果你是喜爱统计数据的开发人员,也能够应用 TypeScript(一个 JavaScript 的超集)。
- 开发者的抉择自在
开发人员能够应用 React Native 开发跨平台应用程序。
劣势在于,React Native 容许你依据我的项目需要和开发人员的偏好来准确抉择要应用的解决方案。
例如,如果开发人员须要解决全局状态(如何在单个应用程序中存储和治理多个组件应用的数据),则他们能够应用自定义用户界面库或编写本人的用户界面库;他们能够应用库路由器,或在 JavaScript 和 TypeScript 做出抉择。
抉择一种框架之前要思考的事件
对很多人来说,Flutter 比 React Native 更难学习。React Native 在开发人员中很风行,因为它应用了 JavaScript 这种驰名的编程语言。因而,如果你是 Dart 的老手,学习 Flutter 的工夫可能比学习 React Native 的工夫更长。但反之亦然:如果你以前曾用过 Dart,那么学习 Flutter 将会很容易。
因为 React Native 中的组件非常简单,因而设置它们的款式时你必须付出很多工作。只有少数几个模块能够辨认平台,并且简直都须要为 iOS 和 Android 利用不同的个性,或者设置不同的款式。
另一方面,Flutter 将组件视为小部件,此外,这些小部件基于 Material Design,所以能够高度自定义。大多数小部件都是自适应的,这意味着它们能够同时在 Android 和 iOS 上应用。
Flutter 在性能方面具备劣势,因为它能够编译为 ARM 或 x86 原生资源,因而十分快。
React Native 只是原生办法的包装,也就是说它架起了一座桥梁,将某些调用转换为原生 API;当存在许多原生调用时,这就会成为瓶颈。
React Native 没有转换为原生代码,它还有 JavaScript 层,而渲染这些代码的性能要比 Flutter 低。这里有一些解决办法,然而 Flutter 就用不着操心这些,因为视图层就像游戏一样简略——而且,因为 Flutter 工程师构建了所有组件,因而对桥梁的原生调用更少,因为它们只是原生视图的包装。
应用 React Native 组件将无奈取得足够的自定义能力。因而,如果有人抉择不包装一个过程,就无奈应用它(例如,视图四周的虚线框将不起作用)——并且来自谷歌和苹果的新组件须要很长时间能力呈现在 React Native 中。
React 的 bug 修补也开始须要更长的工夫。例如边界破裂问题,以及反对不同风味的问题,等等。大多数 React Native 公司正在制作定制的分叉来修复上游未修补的 bug。Flutter 开发人员更加审慎,修复往往很快。到最初你可能把大部分工夫花在 React Native 文档中,查找各种问题,试图找出事件没有按预期进行的起因。
总结
咱们心愿本文中的信息能帮忙你确定以下问题的答案:“Flutter 还是 React Native,哪个更好?”就个别共识而言,谷歌的 flutter 将持续作为 SDK 存在,并且可能在将来几年内取代 React Native 的位置。如果在将来技术的重要性变得更大,那么在抉择最佳解决方案的同时紧跟趋势是十分重要的。