React Native 和 Flutter:哪个更好?
由 Mux 赞助的 DEV 全球展示挑战赛:展示你的项目!
几年前,开发一款同时支持 iOS 和 Android 的原生移动应用,需要分别针对每个操作系统编写代码。你需要既有精通 Java 或 Kotlin 的 Android 开发人员,也有精通 Swift 或 Objective-C 的 iOS 开发人员。
公司通常会设立专门负责 iOS 的团队和专门负责 Android 的团队。这往往会导致同一款应用在不同设备上出现细微的,有时甚至是显而易见的差异。
随着移动应用的重要性日益凸显,各公司开始寻求改进开发流程、提高效率的方法。毕竟,如果我们只需要开发一次应用岂不更好?如果我们只需要一种编程语言和一个团队来开发 iOS 和 Android 应用,而不是两个团队呢?
Facebook 于 2015 年发布的 React Native 和 Google 于 2017 年发布的 Flutter 使这一切成为可能。它们都是流行的跨平台框架,允许公司使用同一套移动应用代码库同时开发 iOS 和 Android 应用。但这两个框架究竟有何不同?哪一个明显优于另一个,还是取决于具体情况?请继续阅读……
不同的编程语言
React Native 使用 JavaScript 作为其编程语言。Flutter 使用 Dart 语言,Dart 是一种强类型语言,融合了 JavaScript 和 Java 的元素。这应该会让 React Native 比 Flutter 更具优势,因为几乎所有 Web 开发人员都熟悉 JavaScript。拥有具备一定移动开发经验的 Web 开发人员的公司可以使用 React Native 来编写移动应用程序。
这在某种程度上是正确的,但也不完全正确。JavaScript 最初是为 Web 开发的,而不是为移动应用开发的。它在移动端表现出色,但并非完美无缺。尤其是在使用某些 JavaScript API 时,你会遇到一些棘手的问题,需要找到一些变通方法。
Flutter 的编程语言 Dart 最初并非为移动应用而生,但至少它是由 Android 的开发商 Google 管理的。Dart 也并非完美无缺,但相比 React Native,你需要的变通方案会少得多。此外,由于 Dart 是强类型语言,Flutter 的编译方式也与 React Native 有所不同。稍后我们会详细介绍这一点。
开箱即用功能
React Native内置了许多组件。在 Flutter 中,与组件对应的概念叫做 widget,而且Flutter 中的widget 数量远多于 React Native 中的组件。在 React Native 中,任何更高级的功能可能都需要你自己构建。
Flutter 的组件虽然数量更多,但并不真正具备自适应功能。而且它们采用的是 Material Design 设计规范。这意味着你的应用在两个操作系统上的外观将完全相同。如果你想开发一款在 iOS 和 Android 上外观不同的应用,则需要手动进行修改。
React Native 的情况则有所不同。虽然它允许你编写一次代码,但你也需要确定代码将在哪个操作系统上运行,并根据操作系统加载不同的组件。它不会自动调整组件的样式。
因此,你需要考虑你是否希望你的应用程序在两个操作系统上完全相同,或者你是否希望区分这两个操作系统,并可能利用每个操作系统的独特功能。
生态系统
React Native 的发展历史比 Flutter 更悠久,因此拥有更丰富的生态系统。此外,由于它使用 JavaScript,你可以使用一些(但并非全部)JS 库。React Native 也被 Facebook(当然)、沃尔玛、Uber、特斯拉和 Skype 等大型公司所采用。
但也别轻易放弃 Flutter。谷歌正在大力投资它,并且也在内部使用它。新的软件包不断发布,而且这个框架目前也拥有相当不错的市场热度,正推动着它向前发展。
表现
首先要说明的是,这两个框架的速度都足以满足几乎所有公司的需求。话虽如此,这两个框架在代码编译方式上却存在一个有趣的差异。
考虑到 JavaScript 不是一种强类型语言,它很难编译成 Java 或 Objective-C。因此,React Native 架构由原生代码和 JavaScript 虚拟机共同构成。
React Native 使用 Objective-C API 渲染 iOS 组件,使用 Java API 渲染 Android 组件。一个桥接器负责在原生线程和 JavaScript 线程之间进行通信。
(这篇文章更详细地介绍了 React Native 的内部机制)
Flutter 让代码更简单。它将 Dart 编译成 C/C++ 库。相比 React Native 的桥接方式,原生代码使用该库的速度更快。因此,Flutter 的性能往往更好一些。
综上所述
React Native 是一个更成熟的框架,拥有更大的社区。它使用 JavaScript,这意味着你可以同时开发 iOS、Android和Web 应用,非常适合小型项目。
尽管如此,Flutter 虽然还很年轻,但已经获得了开发者的大量积极反馈。谷歌似乎决心推广其框架,而 Flutter 也因此越来越受欢迎。
你更喜欢哪个框架?为什么?请在下方评论区告诉我!
文章来源:https://dev.to/x-team/react-native-vs-flutter-which-one-is-better-2kp0
