areslabs / alita

一套把React Native代码转换成微信小程序代码的转换引擎工具。我们不造轮子,不发明新框架,只是提供工具把RN扩展到微信小程序端。
https://areslabs.github.io/alita
MIT License
1.96k stars 130 forks source link

重新思考小程序底层映射React组件的方式 #60

Open ykforerlang opened 4 years ago

ykforerlang commented 4 years ago

现在Alita的每一个React组件,都会在小程序底层存在一个同等的小程序组件映射。这带来了很多好处

  1. 相比其他把节点渲染在一个Page的方案,避免了节点数超出小程序的限制
  2. 局部更新,更加优异的性能
  3. 其他小程序对自定义组件的潜在优化

同时,也带来一些限制:

  1. 自定义组件需要定义 json文件,由于json文件的静态特点,必须要求在编译阶段就生成好组件的引用关系
  2. 各家小程序自定义组件实现有差异,如果Alita要支持其他小程序有很多兼容的工作, 比如批量更新接口的实现各不相同,类似Flatlist renderItem 这种渲染 由其他组件定义的节点,在微信小程序上可以通过抽象节点处理,在其他小程序则需要用 scoped-slot实现, 又比如微信小程序的component会退化为一个节点,而其他小程序不一定

如果把所有节点渲染在一个Page,让组件的概念只保留在React层面,可以让Alita支持其他小程序节省很多工作。 但是上面提到的好处也就没有了。

我在做一些测试,看是否值得

wzzz711 commented 4 years ago

很温和无