今天我们发布 React Native 0.64,它附带了对 iOS 上 Hermes 的支持。
iOS 上的 Hermes 可选启用
Hermes 是一个开源 JavaScript 引擎,专为运行 React Native 优化。它通过减少内存使用、缩小下载大小和缩短应用程序变得可用或“交互时间 (TTI)”来提高性能。
随着本次发布,我们很高兴地宣布,你现在也可以在 iOS 上使用 Hermes 进行构建。要在 iOS 上启用 Hermes,请在你的 Podfile
中将 hermes_enabled
设置为 true
,然后运行 pod install
。
use_react_native!(
:path => config[:reactNativePath],
:hermes_enabled => true
)
请记住,iOS 上的 Hermes 支持仍处于早期阶段。我们在进行进一步基准测试时将其保留为可选启用。我们鼓励您在自己的应用程序上试用它,并告诉我们它的效果如何!
默认启用内联要求
内联要求是 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,请在Hermes GitHub 仓库上提交一个问题。
React 17
React 17 没有包含新的面向开发者的功能或重大突破性更改。对于 React Native 应用程序,主要更改是新的 JSX 转换,使文件不再需要导入 React 即可使用 JSX。
有关 React 17 的更多信息可在React 博客上找到。
主要依赖版本更改
- 放弃了 Android API 级别 16-20。Facebook 应用会持续放弃对使用率足够低的 Android 版本的支持。由于 Facebook 应用不再支持这些版本并且是 React Native 的主要测试界面,因此 React Native 也放弃了支持。
- 需要 Xcode 12 和 CocoaPods 1.10
- Node 最低支持版本从 10 提升到 Node 12
- Flipper 版本提升至 0.75.1
感谢数百位贡献者,他们的努力使 0.64 版本成为可能!0.64 版本更新日志包含了此版本中的所有更改。