JSI 模式

最低支持版本 2.11.0

JavaScript Interface(JSI) 模式提供了一种无需经历编解码(序列化)过程的跨 VM (同步)互调用解决方案,使得 js 可以和 native 直接通信。传统互调用所传递的对象会全部序列化,但并非所有成员都被访问,在特定场景下导致了不必要的开销与冗余。通过 JSI,js 侧可以获取 C++ 定义的对象(HostObject),并调用该对象上的方法。

架构图


jsi架构图

不适用场景

JSI 并非适用于所有场景:

  • 所需读取的成员占比越少,JSI 表现出的性能越优异。
  • 随着所需读取的成员占比上升,JNI 调用次数的增加,所累计的耗时也随之上涨,反而不如编解码实现性能优异。
  • 同步调用简化了编码,耗时更稳定,但会阻塞 JS 执行,不适用于复杂逻辑。

使用例子

HippyReact Demo

HippyVue Demo