发布 React Native 0.64:支持 iOS 平台的 Hermes 引擎
本页面由 PageTurner AI 翻译(测试版)。未经项目官方认可。 发现错误? 报告问题 →
今天我们正式发布 React Native 0.64 版本,此版本新增了对 iOS 平台 Hermes 引擎的支持。
iOS 平台的 Hermes 可选启用
Hermes 是一款专为 React Native 优化的开源 JavaScript 引擎。它通过降低内存占用、减小下载体积并缩短应用可用时间(即"交互就绪时间"/TTI)来提升性能。
本次发布后,您现在也可以在 iOS 开发中使用 Hermes。只需在 Podfile 中将 hermes_enabled 设为 true 并运行 pod install 即可启用。
use_react_native!(
:path => config[:reactNativePath],
# to enable hermes on iOS, change `false` to `true` and then install pods
:hermes_enabled => true
)
请注意:iOS 平台的 Hermes 支持仍处于早期阶段。我们将保持其作为可选功能,同时进行更深入的基准测试。欢迎您在自己的应用中尝试,并反馈使用效果!
默认启用内联引用 (Inline Requires)
内联引用是 Metro 的一项配置选项,通过延迟执行 JavaScript 模块直到实际使用时(而非启动时)来提升应用启动速度。
该功能作为可选配置项已存在多年,并在文档的性能章节中推荐使用。现在我们将默认启用此选项,帮助开发者无需额外配置即可获得更快的 React Native 应用启动体验。
内联引用是 Babel 的一项转换功能,将模块导入语句转换为内联形式。例如,它会把模块导入调用从文件顶部移动到实际使用位置。
转换前:
import {MyFunction} from 'my-module';
const MyComponent = props => {
const result = MyFunction();
return <Text>{result}</Text>;
};
转换后:
const MyComponent = props => {
const result = require('my-module').MyFunction();
return <Text>{result}</Text>;
};
更多关于内联引用的信息请参阅性能文档。
使用 Chrome 查看 Hermes 性能轨迹
过去一年 Facebook 赞助了 Major League Hacking 奖学金计划,支持对 React Native 的贡献。Jessie Nguyen 和 Saphal Patro 新增了在 Chrome DevTools 性能面板中可视化 Hermes 应用执行情况的功能。
详情请查看新版文档页面。
支持 Proxy 的 Hermes 引擎
我们已为 Hermes 添加 Proxy 支持,使其兼容 react-native-firebase 和 mobx 等热门社区项目。如果您正在使用这些包,现在可以将项目迁移至 Hermes。
我们计划在后续版本中将 Hermes 设为 Android 平台的默认 JavaScript 引擎,目前正在解决用户使用中的遗留问题。如果您的应用在采用 Hermes 时遇到阻碍,请在 Hermes GitHub 仓库提交 issue。
React 17 支持
React 17 没有面向开发者的新功能或重大破坏性变更。对 React Native 应用的主要影响是新的 JSX 转换,使文件无需导入 React 即可使用 JSX。
更多 React 17 信息详见 React 官方博客。
主要依赖版本变更
-
停止支持 Android API 16-20 级别。由于 Facebook 应用已停止支持用户量过低的 Android 版本,且该应用是 React Native 的主要测试平台,React Native 将同步停止支持这些版本。
-
需要 Xcode 12 和 CocoaPods 1.10
-
最低 Node 支持版本从 10 升级至 12
-
Flipper 升级至 0.75.1
致谢
衷心感谢数百位贡献者共同成就 0.64 版本!您可以在 0.64 版本变更日志 中查看本次发布的所有更新内容。