在技术层面上,React Native 和 Flutter 有什么区别呢?
这两项技术似乎都能实现类似的功能,而且 Flutter 还认可从 React 中汲取了灵感:faq
当它们列出相同的功能并且语法几乎相同(例如 StatefulWidget
与 Component
类),这一点变得更加明显。
与 AngularDart 是 Angular 的 Dart 实现类似;那么可以认为 Flutter 是 React 的 Dart 实现吗?
在技术层面上,React Native 和 Flutter 有什么区别呢?
这两项技术似乎都能实现类似的功能,而且 Flutter 还认可从 React 中汲取了灵感:faq
当它们列出相同的功能并且语法几乎相同(例如 StatefulWidget
与 Component
类),这一点变得更加明显。
与 AngularDart 是 Angular 的 Dart 实现类似;那么可以认为 Flutter 是 React 的 Dart 实现吗?
从架构上看,React Native(RN)和Flutter非常相似。
Flutter所谓的“Widget”与React的“Component”完全等同。这就是Flutter从React中获得启示的原因。
它们之间的区别在框架的其他方面:
Flutter使用Dart,一种提供“即时”(JIT)和“AOT”(包括树摇)编译的类型语言。
在开发中,Flutter使用JIT编译来实现热重载。对于生产构建,则使用AOT编译以获得更好的性能。
React-Native使用增强了某些语法糖的Javascript JSX。
JSX是一种不同的语言,它会编译成JS,然后在运行时进行评估。
React Native是建立在本机之上的。
当在React Native中使用按钮或文本时,您正在操作用于本机Android / iOS应用程序的正式对象。
我们可以将React视为Android / iOS之间声明布局的通用语言-但从根本上讲,应用程序是存在潜在差异的。
它不是真正的跨平台。但同时,它允许更好地与本机元素互操作。
Flutter则相反。 Flutter的目标是尽可能少地使用本机元素。
Flutter向操作系统请求一个窗口,然后使用Dart和Skia(它是C++图形引擎)完全管理其内容。
这有一些含义:
某种程度上,我们可以将Flutter与WebView/游戏引擎进行比较,但它针对的是休闲应用程序进行了优化。
由于Javascript在Android或iOS上不是一流语言,因此您的React Native应用程序包括一个Javascript解释器,该解释器在运行时解释您的Javascript代码。没有解释器,您将无法使用Javascript编写应用程序,即使是简单的console.log('Hello World!')也不会起作用。
根据React Native文档,在“大多数情况下”,Javascript代码将使用JavascriptCore进行解释。
在幕后,React Native使用本机Android Views和iOS UIViews来显示UI组件(例如跳舞的猴子)在屏幕上。但是,由于Android和iOS SDK的UI部分不使用Javascript,因此您不能仅使用Javascript使猴子跳舞。
这就是桥梁发挥作用的地方。桥梁的另一侧是您在Javascript中编写的React Native组件和逻辑。在对面,我们有托管Android / iOS应用程序,它将本机视图渲染到屏幕上。从现在开始,让我们称桥梁的两侧为Javascript land和native land。
那么,当用户点击我们的“跳舞,猴子,跳舞!”按钮时会发生什么?
setState(() {isMonkeyDancing = true})
或类似的内容。因此,在这个例子中,一个按钮点击需要经过桥梁两次。
实际上,是三次 - 只需最初呈现一个按钮就是跨越桥梁的调用本身。 在一个不仅仅是一个按钮和跳舞猴子的应用程序中,您很可能会经常跨越桥梁更多次。每次这样做都需要序列化数据并从一侧发送到另一侧。
这比仅使用UI表示来快速更新UI直接要慢。此外,在运行时解释Javascript与预先编译代码相比,存在成本。
Flutter vs React Native: 开发者的视角
Facebook 的 React Native
和 Google 的 Flutter
是两个备受瞩目的跨平台应用程序开发技术。在本文中,我们将从开发者的角度详细比较这两种技术。
Flutter 和 React Native 是什么?
React Native
是 Facebook 内部启动的一个项目,他们于2015年将其开源。另一方面,Flutter
是 Google 发起的一个项目,他们自 I/O 2017 以来一直在大力宣传。这两种技术都可以通过使用单一编程语言使应用程序开发人员更快地构建跨平台应用程序。React Native 已经是一个成熟的工具,并且拥有庞大的社区,但 Flutter 也从2017年开始看到了巨大的采用率。在本文中,我们将使用10个标准进行比较:
编程语言
使用跨平台移动应用程序开发技术的关键好处是能够使用单一编程语言为 iOS 和 Android 开发应用程序。
安装
安装方法应该简单明了,没有太多复杂的步骤,以便初学者容易掌握。
UI 组件和开发 API
结论
React Native 和 Flutter 都有其优点和缺点。一些行业专家预测 Flutter 是移动应用程序开发的未来。考虑到上面的比较,很明显 Flutter 已经非常强势地进入了跨平台移动开发竞赛。让我们不要预测未来,静待观察!