React Native还是解释性的,还是现在已经基于编译了?

6 浏览
0 Comments

React Native还是解释性的,还是现在已经基于编译了?

2016年的答案是根据这个问题“React Native是否将JavaScript编译为Java用于Android?”。然而,自从2022年,React Native引入了新的架构:

新架构放弃了桥接(The Bridge)的概念,转而采用另一种通信机制:JavaScript接口(JSI)。JSI是一个接口,允许JavaScript对象持有对C++的引用,反之亦然。

一旦一个对象引用了另一个对象,它就可以直接调用其方法。因此,例如,C++对象现在可以要求JavaScript对象在JavaScript环境中执行一个方法,反之亦然。

https://reactnative.dev/docs/the-new-architecture/why

据我理解,它仍然是一种解释性方法。但是,我今天阅读的一些文章和一篇硕士论文声称它是基于编译的,但没有明确解释这个说法。也许我理解错了。那么React Native现在是解释性的还是编译性的?

0
0 Comments

React Native 仍然主要是一种解释型语言,即使引入了新的基于 JSI 的架构。JSI 允许 JavaScript 和本地代码之间进行更直接的通信,但它并不改变 JavaScript 代码在运行时被解释的事实。

这个问题的出现是因为有人对 React Native 的工作原理产生了疑问。他们可能好奇 React Native 是解释型的还是编译型的。

解决方法是说明 React Native 仍然是解释型语言,尽管新的 JSI-based 架构提供了更直接的通信能力。这意味着 JavaScript 代码在运行时被解释执行,而不是在编译时转换为本地代码。

以下是用来证明 React Native 仍然是解释型语言的代码示例:

console.log("Hello, World!");

当上述代码在 React Native 应用中执行时,它会直接在运行时解释执行,并在控制台输出 "Hello, World!"。

总结起来,React Native 仍然是一个解释型语言,即使引入了新的 JSI-based 架构。这使得开发者可以在 JavaScript 和本地代码之间进行更直接的通信,但 JavaScript 代码仍然是在运行时解释执行的。

0
0 Comments

React Native目前仍然包含在JS解释器中执行的Javascript代码,具体的解释器将由新架构的变化而确定。可以参考一篇详细比较旧架构和新架构的有趣文章:https://medium.com/coox-tech/deep-dive-into-react-natives-new-architecture-fb67ae615ccd。感谢分享这篇文章,确实很好!

0