React-Native JavaScriptCore的好处

6 javascript v8 react-native

当然,我们所有人都知道强大的JavaScript引擎,所以为什么React Native使用不同的引擎来命名JavaScriptCore.

JavaScriptCore不支持ES6以下功能:

Array.prototype.flatten
Run Code Online (Sandbox Code Playgroud)

JavaScriptCore对V8有什么好处?为什么Facebook开发者不使用V8?

jmr*_*mrk 5

V8 不能在 iOS 上运行,因为 Apple 不允许第三方应用程序在运行时生成代码(也称为“JIT 编译”),而 V8 严重依赖其性能 (*)。由 Apple 开发的 JavaScriptCore 被允许在 iOS 上运行(和 JIT 编译代码)。由于 React Native 的目的是跨平台开发,这是一个强有力的论据。

也就是说,Array.prototype.flatten不是 ES6 特性。它目前是“第 3 阶段提案”,这意味着它可能很快就会成为 JavaScript 的正式部分——也许是 ES2019(旧命名方案中的“ES10”)左右。此外,Array.prototype.flat由于名称的 Web 兼容性问题,它已重命名为.flatten。JavaScript 引擎已经开始实现它;根据MDN,最新版本的 Safari/JavaScriptCore 已经支持它,所以 React Native 也支持它可能只是时间问题。

(*)一直在努力构建一个 V8 版本,该版本避免所有运行时代码生成,牺牲大量性能以换取在任何地方运行的能力,但目前尚不可用。

  • iOS 上的 JavaScriptCore 在第三方应用程序中不使用 JIT 编译器,请参阅 Reactive Native 文档中的 [JavaScript Environment 页面](https://facebook.github.io/react-native/docs/javascript-environment)。 (3认同)
  • 无 JIT V8 Lite 现已推出。并已在 IOS 上运行 https://twitter.com/schuay/status/1105785897663057921 (2认同)