wuba / metro-code-split

Further split the React Native code based on Metro build to improve performance, providing `Dll` and `Dynamic Imports` features
MIT License
205 stars 18 forks source link

这个分chunk加载和ramBundle有啥区别吗 #1

Open hf529270451 opened 3 years ago

zq0904 commented 3 years ago
  1. 我个人的理解是

    • RAM Bundles 优化的是“执行效率” 本质native端做事情 整个流程看起来像是 热更新下载一个完整的RAM Bundles,“执行”首屏代码,按需“执行”每个模块
    • Dynamic Imports 是针对 非RAM Bundles 就是一种纯Web思想的解决方案 优化的是主包的体积 整个流程看起来像是 热更新下载首屏代码 用户需要时按需下载其他模块
    • 不管是在方案还是使用场景 都没有什么共同点 完全就是2个东西,唯一相同可能就只有目的都是优化性能
  2. 目前集团内部 没有计划支持RAM

    • 研过ios RAM Bundles 优化数据并没有达到收益预期
    • 我们有计划使用 Hermes JS Engine 而无法使用RAM包功能
    • 现阶段平台方和native 需要针对 RAM Bundles 热更新和缓存策略给予支持
mattlin commented 3 years ago

@zq0904 metro-code-split 基本都是JS端做的事情,那么是否可以支持0.59~0.63的RN版本?

zq0904 commented 3 years ago

@zq0904 Metro-code-split 基本都是JS端做的事情,那是否可以支持0.59~0.63的RN版本?

  1. 为了使开源项目清晰简单易用,正如你看到的开源项目的Dynamic Imports部分都是js在做事情,但事实上native双端是可以在js上下文中直接注入代码来实现类似web中script标签的标准化(我们内部也是这么实现的)。

  2. 关于版本的支持 主要依赖metro的版本 而非react-native,你可以看下readme 中 与Metro版本的兼容性 部分,对于低版本metro若不兼容 尚无计划支持。