React-native和Cordova之间的技术差异

Pro*_*mma 2 cordova hybrid-mobile-app reactjs react-native

“ react-native”和“ Apache Cordova”之间的技术区别是什么?

我已经在Cordova上工作了一段时间了,它的工作方式是,它创建一个webview(无头浏览器)并在其中运行具有各种API访问权限的应用程序。我一直想知道“反应本地”是否同样如此。“ react-native”是否还会创建Webview?还是将javascript代码转换为本地代码?

如果它创建像Cordova这样的“ webview”,那么“ Cordova + React”应用程序和“ react-native”应用程序(不包括react-native提供的本机组件)之间有什么区别?

我知道这里已经存在针对此类问题的答案:电话缺口与React Native。但是我的问题有点不同。谢谢。

Aar*_*all 5

“ React-Native”是否还会创建Web视图?

否。ReactNative是为Android和IOS编写本机用户界面的抽象。您的Javascript代码在OS上的Javascript运行时中运行,但是UI呈现为本机组件。这使其与Cordova / PhoneGap截然不同。

这是在React Native网页上提到的:

本机组件

借助React Native,您可以使用标准平台组件,例如iOS上的UITabBar和Android上的Drawer。这使您的应用程序与平台生态系统的其余部分保持一致的外观,并保持较高的质量标准。这些组件可以使用与它们相对应的React组件轻松集成到您的应用中,例如TabBarIOS和DrawerLayoutAndroid。

并在此博客文章中进行了更详细的解释:

由于React组件是纯粹的,无副作用的函数,可以随时返回视图的外观,因此我们无需从底层渲染视图实现中读取内容即可进行写入。在浏览器环境中,React相对于DOM是非阻塞的,但是React的优点在于它是抽象的,并且没有与DOM紧密耦合。React可以包装任何命令式视图系统,例如iOS上的UIKit。

因此,这意味着通过一些工作,我们就可以做到这一点,以便GitHub上完全相同的React可以为真正的本机移动应用程序提供支持。移动环境中的唯一区别是,我们不是在浏览器中运行React并渲染为div和span,而是在应用程序内部的JavaScriptCore嵌入式实例中运行它,并渲染为特定于平台的更高级组件。