进阶 reactnative.dev 2026-10-11 06:04:21 · 43 阅读

第50章 React Native 中使用 Hermes JavaScript 引擎

版本:0.77使用 Hermes Hermes 是一个专为 React Native 优化的开源 JavaScript 引擎。对大多数应用而言,相比 JavaScriptCore,使用 Hermes 可以带来更快的启动速度、更低的内存占用和更小的应用体积。 React Native 默认使用 Hermes,无需额外配置即可启用。 内置 Hermes React Native 自带内置版本的 Hermes。 每次发布新版 React Native 时,我们都会为你构建一个对应的 Hermes 版本,以确保它与你所使用的 React Native 版本完全兼容。 这一变化对 React Native 用户完全透明。你仍然可以通过本页介绍的命令禁用 Hermes。 技术实现细节可以在本页进一步了解。 确认 Hermes 已启用 如果你刚从头创建了新应用,可以在欢迎视图中查看 Hermes 是否已启用: JavaScript 中有一个 HermesInternal 全局变量,可以用来验证当前是否在使用 Hermes: const isHermes = () => !!global.HermesInternal; 注意:如果你使用非标准方式加载 JS bundle,可能存在 HermesInternal 变量存在、但实际并未使用高度优化的预编译字节码的情况。 请确认你使用的是 .hbc 文件,并按下文所述对切换前后进行基准测试。 要体验 Hermes 带来的收益,可以构建一个 release 版本进行对比。例如,在项目根目录执行: Android npm run android -- --mode="release" yarn android --mode release iOS npm run ios -- --mode="Release" yarn ios --mode Release 这会在构建阶段将 JavaScript 编译为 Hermes 字节码,从而提升应用在真机上的启动速度。 切换回 JavaScriptCore React Native 同样支持使用 JavaScriptCore 作为 JavaScript 引擎。按以下步骤可以停用 Hermes。 Android 编辑 android/gradle.properties 文件,将 hermesEnabled 改回 false: # Use this property to enable or disable the Hermes JS engine. # If set to false, you will be using JSC instead. hermesEnabled=false iOS 编辑 ios/Podfile 文件,按如下方式修改: use_react_native!( :path => config[:reactNativePath], + :hermes_enabled => false, # An absolute path to your application root. :app_path => "#{Pod::Config.instance.installation_root}/.."
)

评论 (0)