GMTC 全球大前端技术大会 8 折涨价倒计时 2 天,现在购票立减 ¥960 ! 了解详情
写点什么

2021 年,Flutter 与 React Native 该如何选择?

2021 年 4 月 19 日

2021年,Flutter 与 React Native该如何选择?

2021 年,跨平台程序员之间关于 React Native 和 Flutter 的旷日持久的争论越来越白热化了。前几年,React Native 还是开发人员的首选框架,但是自 2017 年 Flutter 发布以来,其已经发展成为 React Native 的一个强有力竞争对手。


最近,随着许多初创公司选择了 Flutter 用于 MVP 开发,React Native 正在面临来自 Flutter 的激烈竞争。那么问题来了,哪种应用开发技术将在 2021 年取得成功呢?


Flutter 应用的优势


1. 热重载 = 快速编码


Flutter 允许开发人员使用一种更复杂、更快速的方式来创建应用程序。这是 Flutter 的最大优势之一,也是所有顶级移动应用开发公司都颇为看重的。


开发人员可以实时对代码库做出改进,并立刻看到这些改进反映在请求中。这就是所谓的“热重载”特性,更改通常只需几毫秒就能显示出来。


这一功能让团队可以快速添加功能、修复错误和测试新想法。此外,当团队需要通过协作来加快开发速度时,热重载用起来非常顺手。


2. 适用于多个移动平台的单一代码库


Flutter 允许开发人员为两个应用只编写一个代码库——一个针对 iOS,另一个针对 Android。因为 Flutter 具有自己的模板和布局,它的操作系统无关的平台意味着开发人员可以在两个不同的系统上使用相同的功能,同时保持每个应用都有自己独特的样式、可用性和功能。


Flutter for Web 是由谷歌开发的,为开发人员提供了必要的信誉保障。一旦应用程序上线,就可以用单个代码库支持 Android、iOS 和 Web 平台。


3. 与 React Native 相比,需要的测试只有一半


由于你将在两个平台上测试相同的程序,因此质量保证流程做起来会快得多。我们编写了的自动化测试量只有一半,因为在两个平台上可以编写相同的测试,这样就最大程度地减少了质量检查团队的工作量。


但是,由于你的质量检查专家必须手动检查每台设备上的应用,因此需要进行与原生编程相似级别的手动测试。

为什么有人会更喜欢 React Native 而不是 Flutter?


1. 快速刷新 = 快速编码


它具有与 Flutter 相同的特性。热重载加快了开发过程,并允许程序员将新代码直接插入正在运行的应用程序中。这样开发人员无需重新构建应用程序即可立刻看到改进。


热重载可以保留应用程序的状态,并避免了在完全重载期间丢失它的风险(就基于状态的框架而言,这是一大优势)——这进一步加快了移动应用程序成长的速度。


2. 一个代码库,两个移动平台(甚至更多!)


就像 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 才能满足不同的用户需求。


3. 它使用了流行的编程语言——JavaScript


React Native 使用的是 JavaScript 这种常用的编程语言,而 Dart 尚不为人所知。如果你是喜欢统计数据的开发人员,也可以使用 TypeScript(一个 JavaScript 的超集)。


4. 开发者的选择自由


开发人员可以使用 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 的地位。如果在未来技术的重要性变得更大,那么在选择最佳解决方案的同时紧跟趋势是非常重要的。


原文链接:


https://hackernoon.com/flutter-vs-react-native-what-to-choose-in-2021-ik1n35ta?source=rss

2021 年 4 月 19 日 15:033893

评论 5 条评论

发布
用户头像
翻译的真烂
2021 年 04 月 21 日 18:19
回复
用户头像
flutter 很容易上手 ,底层架构不一样, 注定像flutter的框架 会越来越流行
2021 年 04 月 20 日 09:00
回复
用户头像
阻碍flutter超越RN的原因应该就是热更新了。
2021 年 04 月 20 日 08:08
回复
2021 年 04 月 21 日 11:29
回复
用户头像
还是原生最香
2021 年 04 月 19 日 17:57
回复
没有更多了
发现更多内容

git 教程 --git cherry-pick 命令

生之欢愉,时间同行

git 程序员 git cherry-pick

【回溯算法】经典题:求目标和的组合方案 ...

宫水三叶的刷题日记

LeetCode 数据结构与算法 面试数据结构与算法

白话Go内存模型&Happen-Before

Gopher指北

go

科学的互联网思想 指引我国网络强国建设稳步前行

CECBC区块链专委会

网络安全

2021程序员春招必备:Java面试知识点+答案(7大分类 5000字解析)

比伯

Java 编程 架构 面试 程序人生

Promise原理及常用操作

花明

智慧党建平台解决方案--高效开展党建工作

13530558032

通俗易懂!看了不会忘的网络面试知识点

云流

编程 架构 面试

迎战大厂!“金三银四”和春招通过率达95%的Java面试要点集锦

云流

Java 程序员 架构 面试

(28DW-S8-Day13) 在线教育班型和角色

mtfelix

28天写作

真香!Github一夜爆火,阿里性能优化不传之秘终于开源

程序员小毕

Java 程序员 架构 面试 性能优化

windows 搭建ftp服务

xiezhr

vsftpd ftp ftp服务 文件服务 3月日更

无线网络的用户隔离功能

Python学习心得

张鹤羽粑粑

28天写作 3月日更

区块链电子合同--电子合同区块链签约平台

13530558032

12.手写迷你react(短小精悍就是我)

全栈潇晨

源码分析 React React Hooks

世界经济论坛:四大区块链趋势将在今年绽放异彩

CECBC区块链专委会

区块链

一场关于代码注释的争执,引发的三点思考

架构精进之路

编码 经验分享 七日更 3月日更

Kubelet从入门到放弃系列:GPU加持

DCOS

AI gpu Kubernetes 云原生

Docker的三言两语-基础篇

一个大红包

Docker 28天挑战 3月日更

Wireshark数据包分析学习笔记Day1

穿过生命散发芬芳

Wireshark 数据包分析 3月日更

10.scheduler&lane模型(来看看react是暂停、继续和插队的)

全栈潇晨

源码分析 React React Hooks

CecOS企业虚拟化简介

在即

28天写作 28天挑战 3月日更

Mysql安装

Sakura

9.hooks源码(想知道Function Component是怎样保存状态的嘛)

全栈潇晨

源码分析 React React Hooks

三十而已

ES_her0

28天写作 3月日更

程序员成长第十九篇:要不要转管理岗?

石云升

程序员成长 28天写作 职场经验 管理经验 3月日更

dubbo 源码 v2.7 分析:通信过程及序列化协议

程序员架构进阶

架构 RPC 七日更 dubbo源码 3月日更

区块链产业革命:解决融资租赁之谜

CECBC区块链专委会

区块链

一桶食用油的数字化

吴俊宇

数字化转型 鲁花

11.react concurrent mode(并发模式是什么样的)

全栈潇晨

React React Hooks

2021年,Flutter 与 React Native该如何选择?-InfoQ