React Native还是解释性的,还是现在已经基于编译了?
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现在是解释性的还是编译性的?
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 代码仍然是在运行时解释执行的。
React Native目前仍然包含在JS解释器中执行的Javascript代码,具体的解释器将由新架构的变化而确定。可以参考一篇详细比较旧架构和新架构的有趣文章:https://medium.com/coox-tech/deep-dive-into-react-natives-new-architecture-fb67ae615ccd。感谢分享这篇文章,确实很好!