Flutter vs React Native 超全的指南

526 阅读7分钟

移动开发是开发者的一个金矿。在过去的20年里,它的流行程度与JavaScript的流行程度一样呈爆炸式增长。有大约25亿的安卓用户和10亿的iPhone用户,建立和运送本地移动应用程序是有意义的。除此之外,还有 无数的工具和资源可用于Android和iOS开发。

把同一个手机应用做两次并不是对开发者时间的最佳利用。这是两个不同的平台需要维护和管理。根据要求,苹果使用Swift。另一边是安卓和它基于Java的编译器。

这就是 "衔接 "框架和库的作用。Flutter和React Native是两个流行的桥接解决方案,使其有可能一次性编码并使用多个平台。Flutter假定你只需建立一个应用程序,它就能在任何屏幕上运行。React Native是React的一种风味,利用其JavaScript UI库的当前实现,使其有可能在任何移动设备上运行。

从表面上看,这些功能听起来很不错--但每一个好处,都有一个怪癖。在深入研究它们之前,我们需要定义React Native和Flutter。

什么是Flutter?

Flutter是谷歌在2017年发布的一个跨平台UI开发SDK。因此,我们不需要为各种平台拥有多个代码库,而只需要处理一个代码集。这包括网页、原生桌面应用程序,以及安卓和iOS的移动端。

通过这种跨平台支持的想法,开发人员可以同步品牌和视觉资产,保持一致性,并减少你的应用程序支持的平台所需的测试数量。

Flutter是基于Dart的。简而言之,Dart吸取了JavaScript和C语言的经验,创造了一种面向对象和基于类的编程语言,支持接口、混合器、抽象类、重化泛型和类型推理。由于受到JavaScript和C语言家族的影响,很多开发者在学习Dart时都会感到很熟悉,这使得成为Dart原生语言的任务变得简单。

什么是React Native?

React Native于2013年作为一个Hackathon项目开始存在。React Native的预览版是在2015年1月发布的,而正式的稳定版则是在2018年3月。

如果说年龄很重要,那么React Native就处于领先地位。React Native在时间轴上比Flutter更早,因此有更大的社区和支持群体。它还利用了JavaScript,使目前的Web开发人员更容易过渡到本地移动应用开发。

React Native通过扩展React.js来工作,React.js是一个用于构建和协调用户界面的库。这意味着React开发者已经具备了构建React Native应用所需的基础工作和经验,只需获得最少的额外知识。

使用React Native与Flutter的好处和怪异之处

虽然React Native和Flutter都试图实现相同的结果--一次编码,到处部署--但产生的结果是不一样的。以下是针对评估类别的相似性、差异和跨平台实施的概述。

性能方面

React Native和Flutter都是维护良好的库。它们都有内置的模拟器,允许你在桌面上或在手机上原生测试。React Native和Flutter都有热重载功能,使软件开发过程更快。

要做到真正的 "原生",所制作的应用程序需要用所需的语言编写--iOS用Swift,Android用Kotlin或Java。这与使用包装器不同,包装器只是将你 基于JavaScript的应用程序(如以Angular为基础的应用程序)放在移动设备上。

React Native通过使用平台特定的API和模块将JavaScript代码编译成相关的本地组件来实现原生。可用API之外的JavaScript代码通过应用程序和目标平台之间的桥梁工作。这意味着,任何添加到可用的React Native模块中的东西都会使应用程序成为部分原生的。因此,JavaScript代码和原生平台之间的同步性可能会有延迟。

Flutter并没有编译成iOS或Android应用程序,而是编译成C语言,即这两个平台的基础语言。它使用ARM或X86本地库,这极大地提高了它在Android和iOS上的速度。

开发者生态系统

Flutter在开发者中的受欢迎程度正在增长。然而,与React Native相比,后者在社区支持方面拥有更广泛和更强大的立足点。

(来源javascript.plainenglish.io/flutter-vs-…)

这种受欢迎程度,部分是由于Dart比Java和C#要新。Flutter也是全新的时代,有更多微型的生态系统、社区支持和开源。当遇到像React Native这样的选择时,公司倾向于在他们的原生应用程序构建方法上更加保守,而不是在Flutter上做实验。React Native也因为它的年龄而提供了相对的稳定性,并在许多商业应用中证明了自己。

尽管如此,Flutter的受欢迎程度和倡导程度在过去几年里急剧增长,在GitHub上超过了React Native。截至2021年5月,Flutter有12万颗星。同时,React Native一直保持稳定,大约有95k颗星。

竞争优势

随着2021年3月Flutter 2的宣布,开发人员可以使用相同的代码库将原生应用程序运送到iOS、Android、Windows、macOS、Linux,以及通过浏览器Web的体验。除此之外,开发者还可以将Flutter嵌入到设备、电器和智能汽车中。

相比之下,React Native只支持iOS和Android。虽然它在几年前是革命性的,但后来企业已经开发出更多的方式来整合移动设备以外的软件。

React Native和Flutter的上市时间是大致相同的。它们也允许开发者比传统的原生开发方式更快地出货。然而,值得注意的是,React Native同时使用桥梁和原生元素,由于处理方式不同,可能需要针对不同平台进行优化。这个过程会延长React Native的上市时间。相比之下,Flutter不存在这个问题。

2022年Flutter与React Native的对比--并排对比

FlutterReact Native
表现更好,因为它可以编译成真正的原生应用程序除了支持的功能,其他都是JavaScript,使其成为一个伪原生移动应用
开发者生态系统由于开发者和企业的兴趣和接受程度的提高,其规模呈爆炸式增长由于React社区的可及性以及JavaScript和React的技能转移性,其规模很大。
竞争优势不仅仅是支持移动设备。目的是在任何平台上工作,包括网络、屏幕和非移动设备。仅限于iOS和Android设备
开发者的生产力可能需要学习Dart,由于没有经验,不熟悉的领域可能会降低生产力。如果来自Web框架,则不需要学习其他语言,但仍需要了解React。
社区不断增长的社区,其规模正在增加,以配合React Native。Flutter的GitHub星级计数在2020年超过了React Native。已有的社区,大部分是由已经是JavaScript开发者的人组成的。

哪一个更好?React Native还是Flutter?

React Native和Flutter都是跨平台原生应用开发的伟大竞争者。但最大的问题是:你应该选择哪一个?React Native还是Flutter?

这个问题的答案取决于几个因素。React Native有弱点,在整合蓝牙技术方面有问题。Flutter不支持3D触摸。

React在社区支持和能够支持应用的开发者方面要好得多。相比之下,Flutter可能更难学习--尤其是没有Java背景或C族背景的网络开发者。然而,这个好处包括高度可定制的能力,而React Native由于是对原生视图的包装而限制了你。

最好的应用程序是在利用你当前团队的优势时创建的。如果你的团队大多是Java开发人员,那么Flutter可能是你的选择。如果你的团队主要由前端网络专家组成,那么React Native会因为知识深度和社区导航而产生一个卓越的应用程序。

The postFlutter vs. React Nativeappeared first onTabnine Blog.