小程序 Taro 在小程序中实现了自定义 React Reconciler, 通过 React Diff 计算出最小的 Virtual DOM 变更, 再把这些变更转换成小程序可识别的 setData patch, 最终通过 setData 完成视图更新, 从而在双线程模型下模拟 React 的更新机制。
:为什么 Taro 要在编译期生成模板?
因为小程序视图层运行在独立 WebView,不能运行 JS 逻辑, 必须提前生成 WXML 等模板, 运行时只做数据更新。
一句话核心: 小程序把 逻辑执行(JS) 和 视图渲染(DOM / WXML) 放在两个不同线程, 通过 数据通信 协作,从根本上避免 JS 阻塞渲染。
setState React Diff Patch setData
View Render