news 2026/4/15 10:35:28

Hermes JS 引擎入门:让你的 React Native 应用飞起来

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
Hermes JS 引擎入门:让你的 React Native 应用飞起来

目录

    • 一、什么是 Hermes?
    • 二、Hermes 的核心优势
    • 三、如何启用 Hermes
      • 3.1 新项目(React Native 0.70+)
      • 3.2 Android 项目手动启用
      • 3.3 iOS 项目手动启用
    • 四、验证 Hermes 是否生效
    • 五、Hermes 工作原理简析
    • 六、常见问题 & 注意事项
      • Q:启用后 App 崩溃怎么办?
      • Q:Hermes 支持哪些 JS 特性?
      • Q:调试时如何使用 Chrome DevTools?
    • 七、总结

一、什么是 Hermes?

Hermes 是 Meta(原 Facebook)专为 React Native 设计并开源的 JavaScript 引擎。它于 2019 年在 Chain React 大会上首次发布,目标只有一个:让 React Native 应用在中低端 Android 设备上启动更快、占用内存更少

与 V8、JavaScriptCore(JSC)等通用 JS 引擎不同,Hermes 采用AOT(Ahead-of-Time)预编译策略,在构建阶段将 JS 代码编译为字节码,运行时直接执行字节码,绕过了传统引擎运行时解析 + JIT 编译的耗时流程。

📌 从 React Native0.70开始,Hermes 已成为 Android 和 iOS双平台默认JS 引擎。


二、Hermes 的核心优势

指标传统 JSCHermes
TTI(首次可交互时间)较慢显著缩短(可达 50%+)
包体积(字节码)较大更小
内存占用较高更低
启动时 JIT 开销无(AOT 预编译)

💡 对中低端 Android 设备(如 2GB 内存机型)提升效果尤为明显。


三、如何启用 Hermes

3.1 新项目(React Native 0.70+)

新建项目默认已启用 Hermes,无需额外配置。

3.2 Android 项目手动启用

编辑android/gradle.properties,确保以下配置存在:

# 启用 Hermes 引擎 hermesEnabled=true

同步 Gradle 并重新构建:

cdandroid ./gradlew cleancd..npx react-native run-android

3.3 iOS 项目手动启用

编辑ios/Podfile,在:hermes_enabled处设置为true

use_react_native!(:path=>config[:reactNativePath],:hermes_enabled=>true)

然后重新安装 Pod 并构建:

cdios podinstallcd..npx react-native run-ios

四、验证 Hermes 是否生效

在你的 React Native 代码中运行以下代码,即可判断当前使用的引擎:

constisHermes=()=>!!(globalasany).HermesInternal;console.log('Hermes 已启用:',isHermes());// true 则生效

也可以在 React 组件中显示:

import React from 'react'; import { Text, View } from 'react-native'; export default function App() { const isHermes = !!(global as any).HermesInternal; return ( <View> <Text>JS 引擎:{isHermes ? 'Hermes' : '其他'}</Text> </View> ); }

五、Hermes 工作原理简析

Hermes 的核心流程可以概括为:

构建阶段:Metro Bundler 调用 Hermes 编译器(hermesc),将打包后的 JS bundle 转换为.hbc(Hermes Bytecode)文件。

运行阶段:App 启动时直接加载.hbc字节码,Hermes 虚拟机无需解析原始 JS,直接执行,省去了 Parse + Compile 的开销。

⚠️ Hermes不含 JIT(即时编译器),因此在长时间运行的计算密集型场景(如复杂动画、大量数据处理)下,性能可能不如 V8/JSC 的 JIT 版本。它的优势在于启动速度内存效率


六、常见问题 & 注意事项

❗ 部分第三方原生库在 Hermes 下可能存在兼容性问题,升级前请检查依赖库版本。

Q:启用后 App 崩溃怎么办?

先检查第三方库兼容性,尤其是涉及 JS 语法的库(如使用了 Proxy、WeakRef 等高级特性)。可临时将hermesEnabled改回false排查。

Q:Hermes 支持哪些 JS 特性?

Hermes 支持 ES6+ 的绝大多数特性,包括 async/await、可选链、空值合并等。完整支持列表可查阅 hermesengine.dev。

Q:调试时如何使用 Chrome DevTools?

Hermes 支持通过 Chrome DevTools 调试。开启 React Native Debugger 后,选择"打开 Hermes 调试器"即可,支持断点、内存快照等功能。


七、总结

Hermes 是 React Native 生态中一个重要的性能提升工具,尤其适合面向中低端设备的移动应用。其 AOT 字节码编译策略显著降低了 TTI,同时减少了内存占用。对于大多数 React Native 0.70+ 项目,开箱即用、无需额外配置。

建议所有正式项目默认启用 Hermes,并通过实际设备进行性能对比测试,以评估收益。


如果本文对你有帮助,欢迎点赞收藏!有问题欢迎在评论区留言交流 🙌

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/15 10:32:11

为什么选择w64devkit:Windows平台C/C++开发的终极便携解决方案

为什么选择w64devkit&#xff1a;Windows平台C/C开发的终极便携解决方案 【免费下载链接】w64devkit Portable C and C Development Kit for x64 (and x86) Windows 项目地址: https://gitcode.com/gh_mirrors/w6/w64devkit 还在为Windows上的C/C开发环境配置而烦恼吗&a…

作者头像 李华
网站建设 2026/4/15 10:31:12

手写笔记新境界:Xournal++让你告别杂乱笔记的终极指南

手写笔记新境界&#xff1a;Xournal让你告别杂乱笔记的终极指南 【免费下载链接】xournalpp Xournal is a handwriting notetaking software with PDF annotation support. Written in C with GTK3, supporting Linux (e.g. Ubuntu, Debian, Arch, SUSE), macOS and Windows 10…

作者头像 李华
网站建设 2026/4/15 10:28:43

如何让微信聊天记录成为你的数字记忆银行?WeChatMsg终极指南

如何让微信聊天记录成为你的数字记忆银行&#xff1f;WeChatMsg终极指南 【免费下载链接】WeChatMsg 提取微信聊天记录&#xff0c;将其导出成HTML、Word、CSV文档永久保存&#xff0c;对聊天记录进行分析生成年度聊天报告 项目地址: https://gitcode.com/GitHub_Trending/we…

作者头像 李华
网站建设 2026/4/15 10:27:10

香橙派USB摄像头保姆级配置:从mjpg-streamer到开机自启,一个脚本搞定

香橙派USB摄像头生产级部署指南&#xff1a;从工具选型到系统集成实战 当你已经成功在香橙派上测试了USB摄像头的基本功能&#xff0c;接下来面临的挑战是如何将其转化为一个稳定、可靠的生产级应用。无论是智能监控系统、远程看护设备还是AI视觉终端&#xff0c;摄像头服务的…

作者头像 李华
网站建设 2026/4/15 10:23:19

信息学奥赛必备:3种方法手把手教你分解质因数(附C++代码)

信息学奥赛必备&#xff1a;3种高效质因数分解算法深度解析与实战优化 引言&#xff1a;为什么质因数分解如此重要&#xff1f; 在信息学竞赛的赛场上&#xff0c;质因数分解就像一把瑞士军刀——看似简单却能解决各类数学难题。从密码学的RSA算法到数论题目中的常见套路&#…

作者头像 李华