unl*_*101 48 javascript java android react-native react-native-android
当我使用React Native开发混合应用程序时.当我从React Native代码创建Android-App时,我编写的JavaScript代码是否会转换为Dalvik/ART Runtime的Java-Code或Java-Bytecode?或者只是编译为本机UI组件的UI组件?或者像Fetch API这样的库是否将JavaScript代码编译成Java-Code或Java-Bytecode?
Mar*_*arc 69
基本上,你写Javascript.Javascript与本机组件(Android上的Java,iOS上的Objective C,Windows上的C#)进行通信.
通过所谓的"桥梁"进行通信.如果您认为此通信过于缓慢,则可以选择分别在Java,Objective C或C#中实现Javascript功能,以便纯粹运行本机.在这种情况下,您直接使用本机代码编写,因此本机编译没有Javascript.
这将牺牲性能的兼容性.通常,这不是必需的.
Gur*_*ngh 22
代码仍然是JavaScript本机代码,不会转换为任何其他格式.混合应用程序在本机容器应用程序内运行,该应用程序调用JavaScript运行时引擎,负责执行JavaScript代码.我希望这澄清了这个问题.
根据《 React Made Native Easy》一书:
本质上,React Native可以看作是一组React组件,其中每个组件代表相应的本机视图和组件。
React Native架构中也包含两个部分:
本机代码/模块:对于iOS,大多数本机代码是用Objective C或Swift编写的,而对于Android,则本机代码是用Java编写的。但是对于编写我们的React Native应用程序,我们几乎不需要为iOS或Android编写本地代码。
Javascript VM:运行我们所有JavaScript代码的JS虚拟机。在iOS / Android模拟器和设备上,React Native使用JavaScriptCore,这是为Safari提供支持的JavaScript引擎。JavaScriptCore是最初为WebKit构建的开源JavaScript引擎。对于iOS,React Native使用iOS平台提供的JavaScriptCore。它最初是与OS X Mavericks一起在iOS 7中引入的。
对于这些部分之间的通信:
React Native桥: React Native桥是一个C ++ / Java桥,负责本机和Javascript线程之间的通信。自定义协议用于消息传递。
我看到的最好的解释-
00:00 - 03:55
https://www.youtube.com/watch?v=6ZnfsJ6mM5c&t=1228s
“在编译后的本机应用程序中 - 所有 UI(按钮,文本...)都将被编译为本机代码(Java 或 Objective C),而 JavaScript 部分将保留 JavaScript。”
完整的解释 -
08:06-14:10
https://www.youtube.com/watch?v=qSRrxpdMpVc
| 归档时间: |
|
| 查看次数: |
19626 次 |
| 最近记录: |