ReactNative底层架构简述
RN现在主要有3个线程:
JS thread。JS代码执⾏线程,负责逻辑层⾯的处理。Metro(打包⼯具)将React源码打包成⼀个单⼀JS⽂件(就是图中JSBundle)。然后传给JS引擎执⾏,现在ios和android统⼀⽤的是JSC。
UI Thread(Main Thread/Native thread)。这个线程主要负责原⽣渲染(Native UI)和调⽤原⽣能⼒(Native Modules)⽐如蓝⽛等。
reactnative开发Shadow Thread。这个线程主要是创建Shadow Tree来模拟React结构树。Shadow Tree可以类似虚拟dom。RN使⽤Flexbox布局,但是原⽣是不⽀持,所以Yoga就是⽤来将Flexbox布局转换为原⽣平台的布局⽅式。
640.png
Bridge的问题
问题:因此强交互异步Bridge容易成为瓶颈。
解决:合并多个通信次数,减少Bridge。JSI新架构。原⽣组件。
JSI新架构
JSI是Javascript Interface的缩写,⼀个⽤C++写成的轻量级框架,它作⽤就是通过JSI,JS对象可以直接获得C++对象(Host Objects)引⽤,并调⽤对应⽅法。
有了JSI,JS和Native就可以直接通信了,调⽤过程如下:
JS->JSI->C++->ObjectC/Java
640.png
F ab r ic
Fabric是整个架构中的新UI层,包括了新架构图中的renderer和shadow thread。
⾃此三个线程通信再也不需要通过Bridge,可以直接知道对⽅的存在,让同步通信成为现实。另外⼀个好处就是有了JSI,JS引擎不再局限于JSC,可以⾃由的替换为V8,Hermes,进⼀步提⾼JS解析执⾏
的速度。有了JSI以后,JS可以直接掉调⽤其他线程,实现同步通信机制。另外数据可以直接引⽤,不需要拷贝,于是就变成了下⾯新的通信模式.
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论