React Native 新架构实战课
蒋宏伟
58 同城前端架构师,58RN 负责人
18214 人已学习
新⼈⾸单¥59
登录后,你可以任选4讲全文学习
课程目录
已完结/共 42 讲
React Native 新架构实战课
15
15
1.0x
00:00/00:00
登录|注册

30|JavaScript引擎:双向通讯底层原理是什么?

你好,我是蒋宏伟。
在上一讲中,我们介绍了 React Native 使用 Bridge、Turbo Modules、Fabric Components 实现了 JavaScript 和 Native 之间的双向通讯,而双向通讯离不开我今天要和你介绍的 JavaScript 引擎。
常见的 JavaScript 引擎有 V8 和 JavaScriptCore。V8 引擎是 Google 出品的,Chrome 浏览器用的就是它。而 JavaScriptCore 引擎是苹果主导的,它是 Safari 浏览器的引擎。在浏览器下载完成 JavaScript 脚本后,引擎开始执行这些字符串形式的脚本,这些字符串脚本最终会转换机械码,并在硬件上执行。这就是浏览器中页面能够跑起来的原因。
而在 React Native 新架构中,它用的引擎是 Facebook 团队自己研制的 Hermes 引擎。Hermes 引擎和常见的 V8 或 JavaScriptCore 的功能几乎一样,不同的是 Hermes 是为移动端定制的,在启动性能上有不少优势。类似浏览器中的页面,React Native 要跑起来,也离不开 JavaScript 引擎的支持。不仅如此,引擎还是 JavaScript 和 Native 双向通讯的秘密所在。
确认放弃笔记?
放弃后所记笔记将不保留。
新功能上线,你的历史笔记已初始化为私密笔记,是否一键批量公开?
批量公开的笔记不会为你同步至部落
公开
同步至部落
取消
完成
0/2000
荧光笔
直线
曲线
笔记
复制
AI
  • 深入了解
  • 翻译
    • 英语
    • 中文简体
    • 中文繁体
    • 法语
    • 德语
    • 日语
    • 韩语
    • 俄语
    • 西班牙语
    • 阿拉伯语
  • 解释
  • 总结

JavaScript引擎在React Native中扮演着关键角色,通过JSContext实现双向通信。JSContext是JavaScript的执行环境,可在Objective-C中创建和使用,也能在JavaScript中获取和使用。通过JSContext,Objective-C可以向JavaScript传递消息,实现双向通讯。同时,JavaScript也能主动向Objective-C传递消息。在React Native中,宿主对象nativeFlushQueueImmediate、__turboModuleProxy和nativeFabricUIManager使用JSContext实现双向通信。React Native新架构借助Hermes引擎实现宿主对象,实现JavaScript和C++函数相互调用,实现跨语言传参,进而实现双向通信。整体而言,本文通过深入浅出的方式,帮助读者快速了解JavaScript引擎在React Native中的双向通讯底层原理。

仅可试看部分内容,如需阅读全部内容,请付费购买文章所属专栏
《React Native 新架构实战课》
新⼈⾸单¥59
立即购买
登录 后留言

全部留言(5)

  • 最新
  • 精选
  • 极客CEO
    通过context实现双向通信,那还需要 bridge 么
    2024-01-17归属地:上海
  • Geek_63fd40
    文中讲的是新架构下的通讯还是旧架构的通讯呢?有点懵。
    2023-09-04归属地:北京
    3
  • 骑鹤下江南
    应该是 evaluateScript 不是 evaruateScript 吧
    2023-08-01归属地:安徽
  • 杨永安
    在原来的v8/jscore引擎中,是不是共享系统本身的引擎?似乎需要将js代码转化为es5等安全的级别。 想知道 Hermes 对ES的版本支持是否依赖手机系统本身?还是独立的一个运行环境。
    2023-03-08归属地:北京
    1
  • 小疯子一头
    jscontext 不等同于this
    2023-01-29归属地:北京
收起评论
显示
设置
留言
5
收藏
沉浸
阅读
分享
手机端
快捷键
回顶部