我对React Native的工作方式仍感到很困惑.也许是因为我在移动开发方面没有相当不错的背景(虽然我尝试了原生Android一两次).
如果我没错,像Phonegap或Ionic这样的混合框架会在'WebView'中运行整个项目(或大部分项目),我错了吗?
而本机框架(如React Native)则意味着使用本机资源而不是纯粹的Web技术.
但是我们仍然编写Javascript,React Native可以很快完成工作,它可能仍在使用我们刚写的Javascript(我的意思是,它不是解析,转换为本机代码并重新编译).
我想到的问题是,什么是本机资源以及React Native项目中没有的内容?如果没有在'webview'中,我们编写的Javascript在哪里运行?有些本机库可以为两个平台创建Javascript到Objective-C和Java的接口吗?在Web解决方案中,它只是将整个代码注入WebView?
额外的问题:我们可以将React Native视为混合框架,因为我们为许多不同的平台编写了一个代码,或者它不是正确的术语吗?
如果我没错,像Phonegap或Ionic这样的混合框架会在'WebView'中运行整个项目(或大部分项目),我错了吗?
是.PhoneGap和Ionic使用PhoneGap(实际上是Cordova)作为框架的一部分,利用HTML,CSS和JavaScript来呈现UI.除此之外,唯一的连接(据我所知)是Cordova提供给设备的本机API的访问(例如,想想传感器).
而本机框架(如React Native)则意味着使用本机资源而不是纯粹的Web技术.
是的,RN的方法是使开发人员能够使用JavaScript和React框架,同时保留本机开发的好处(性能,感觉和外观等).
但是我们仍然编写Javascript,React Native可以很快完成工作,它可能仍在使用我们刚写的Javascript(我的意思是,它不是解析,转换为本机代码并重新编译).
在这里,我认为您的误解在于:您必须将React Native视为仍然依赖于iOS/Android/Windows本机API和JavaScript代码的本机应用程序之间的"桥梁".该桥授予对此类API的JS访问权限,并关注呈现UI和其他不同的本机方面,以及提供相反方向的数据(从Native到JS).JS代码从未被"转换"为Java或Swift/Obj-C.它的执行方式与编程方式相同.但是,您有可能要求RN使用JavaScript中的一些本机组件(例如,
将UILabel
在iOS中实例化一个)).然后,库使用一些组件(如布局,视图,控件等)实现此方法,但仍然如上所述.
我想到的问题是,什么是本机资源以及React Native项目中没有的内容?
所以...基本上,用JavaScript编写的任何东西都不是原生的,但通过它的执行,你会获得原生组件.您使用本机API直接编程的任何内容(这是RN的优势之一,如果您对此感到满意或者某个本机组件未在库中实现,您仍然可以本地开发)可以被视为"本机".
如果没有在'webview'中,我们编写的Javascript在哪里运行?有些本机库可以为两个平台创建Javascript到Objective-C和Java的接口吗?
如前所述,React Native 是 JS和Objective-C之间的接口.JavaScript不会在任何时候在WebView中呈现.
在Web解决方案中,它只是将整个代码注入WebView?
React Native不适用于网络...除非你使用它.
额外的问题:我们可以将React Native视为混合框架,因为我们为许多不同的平台编写了一个代码,或者它不是正确的术语吗?
嗯......我说混合框架是一种结合了不同开发资源(比如Web技术和本机API)的工具.在这种情况下,React Native将属于该类别.我之所以称之为混合,只是因为它适用于多个平台(我只是称之为多平台).