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
《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 不等同于this2023-01-29归属地:北京
收起评论