#taro 怎么适配的不开源的小程序

对于微信小程序这样不开放不开源的端,我们可以先把 React 代码分析成一颗抽象语法树,根据这颗树生成小程序支持的模板代码,再做一个小程序运行时框架处理事件和生命周期与小程序框架兼容,然后把业务代码跑在运行时框架就完成了小程序端的适配

博客

#taro 架构

Taro2 当前的架构主要分为:编译时 和 运行时。

其中编译时主要是将 Taro 代码通过 Babel 转换成 小程序的代码,如:JS、WXML、WXSS、JSON。

运行时主要是进行一些:生命周期、事件、data 等部分的处理和对接。

对 React 的一些核心方法:setState、forceUpdate 等进行了替换和重写,结合前面编译后 render 方法被替换,大家不难猜出:Taro 当前架构只是在开发时遵循了 React 的语法,在代码编译之后实际运行时,和 React 并没有关系。

重编译时,轻运行时:这从两边代码行数的对比就可见一斑。 编译后代码与 React 无关:Taro 只是在开发时遵循了 React 的语法。 直接使用 Babel 进行编译:这也导致当前 Taro 在工程化和插件方面的羸弱。

Taro 3.2 React Native 对整个编译系统进行较大调整,不再生成中间代码,而是直接利用 Metro 生成 bundle,通过运行时适配 Taro 3 标准,这种方式使得编译过程更简单,大大提升了编译速度,且给我们带来了更多的好处:

利用 Metro 打包 React Native ,通过多级缓存以及 hasteFS 让打包速度更快 更加贴合 React Native 生态,社区基于 Metro 打包优化方案对接更加容易