携程CRN源码详解之拆包(一)——总览

1、CRN开源

    CRN是由携程无线平台研发团队基于React Native框架优化,定制成稳定性和性能更佳、也更适合业务场景的的跨平台开发框架。CRN是一整套框架,包含了拆包、加载流程框架、UI框架、平台统一框架,CRN的初衷是提升RN页面加载速度,在不断地优化后形成了CRN框架。因此性能是CRN的核心,而需要做到性能优化,就离不开CRN的根本——拆包。

    本次CRN开源的主要是性能优化部分, 也是规模化使用RN进行业务开发必须要做的优化。其内容包括以下:

  • 打包支持框架和业务代码拆分
  • 支持框架代码后台预加载
  • 打包支持增量编译(同一模块,两次打包模块ID不变)
  • iOS&Android统一一套打包产物
  • 首屏加载性能统计
  • LazyRequire

所有的功能都是跟拆包密不可分,我自己也在CRN之前开源了一个拆包工具https://github.com/smallnew/react-native-multibundler,而CRN的拆包工具的名字叫crn-cli,在实现方式上两者有明显的不同,后面我会分几个部分解析crn-cli源码,并提出一些注意事项

2、CRN-CLI的PATCH

   有别与基于metro配置打包的react-native-multibundler,CRN由于有更多的定制功能,metro的配置根本不够用,因此crn-cli使用了patch方式直接修改了Metro、RN的源代码。打包的时候控制台会有以下的log:

crn-cli pack
[crn-cli]: remove publish
[crn-cli]: begin build...
成功替换< /Users//Works/learn/CRN/crnprj002/node_modules/metro/src/shared/output/RamBundle/crn-as-assets.js >文件
成功替换< /Users//Works/learn/CRN/crnprj002/node_modules/metro/src/shared/output/crn-bundle.js >文件
成功替换< /Users//Works/learn/CRN/crnprj002/node_modules/metro/src/lib/createModuleIdFactory.js >文件
成功替换< /Users//Works/learn/CRN/crnprj002/node_modules/metro/src/shared/output/RamBundle/as-assets.js >文件
成功替换< /Users//Works/learn/CRN/crnprj002/node_modules/metro/src/shared/output/bundle.js >文件
成功替换< /Users//Works/learn/CRN/crnprj002/node_modules/metro/src/ModuleGraph/worker/collectDepen
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值