运行时是连接“原生”和“JavaScript”世界的原生桥梁。Android 和 iOS 各有一个,这两个运行时是框架的核心,它支持 NativeScript 中许多独特的功能。由于运行时负责评估我们在应用程序中编写的 JavaScript 代码,因此它们自然需要一个嵌入式引擎来处理此职责。出于各种遗留原因,这两个运行时使用不同的 JavaScript 引擎 - V8 用于 Android 运行时,而 JavaScriptCore 用于 iOS 运行时。有关所有这些操作方式的更多信息,可以在 文档 中找到。
维护两个具有两个不同 JavaScript 引擎的运行时会带来一些挑战。
我们选择对两个平台都使用 V8,原因有以下几个。
几个月前,运行时团队的 Darin Dimitrov 开始了一个 POC 来验证这是否可行,并且一步一步地,他最终发现这个选项变得非常现实。作为这项工作的核心驱动者,Darin 与 Google 的 V8 团队进行了广泛的合作,他们在这一过程中提供了极大的帮助。现在,我们要向 Jakob Gruber 表示衷心的感谢,感谢他一路以来的帮助。
在这一点上,我们的大部分测试都通过了新的运行时,我们也设法让一些内部应用程序可以使用它。性能与官方版本类似,即使没有提供对快照的支持。也就是说,我们非常高兴与大家分享这些内容。
测试新的 iOS 运行时非常容易。你需要一个可以工作的 NativeScript 应用程序 - 你可以在一个全新的空白项目上尝试,也可以在一些现有的应用程序上尝试(确保备份!)。你只需要运行以下命令
tns platform add ios@alpha-v8
之后,以通常的方式运行应用程序
tns run ios
你就完成了!
以下功能尚未实现,并且无法正常工作。
首先,如果你尝试过了,请务必告诉我们你的想法!如果你发现任何问题,请在 V8 iOS 存储库 中报告,并且不要忘记提及你正在使用 V8 alpha 版本。由于日志记录尚未启用,你需要附加问题的样本重现,以便我们调试它。
我们计划在年底之前发布一个 BETA 版本和更稳定的版本。你的反馈对于及时解决最重要的问题和相应地确定发布范围至关重要。