携程CRN源码详解之拆包(三)——增量编译

本文详细介绍了携程CRN的增量编译过程,强调了保持模块ID不变以优化打包效率的重要性。通过读取并更新map文件,实现模块ID的复用,避免全量打包。同时讨论了携程在业务包ID上的策略,推测其可能采用了业务包交互的中间件,以解决ID冲突和安全问题。最后提及CRN的其他特性,如框架和业务代码拆分、预加载、性能统计等。
摘要由CSDN通过智能技术生成

1、增量编译

    增量编译在这里指的是:打过一次js包后,后面再打包就会基于上次的打包基础打包。这里的基础指的是moduleId的map。crn-cli使用的是数字来代表module,rn_common包生成的文件都是0.js 1.js 2.js 3.js.... 业务包生成的文件都是666666.js 666667.js ..... ,而这些数字在rn中并不是固定的,比如在一次打包中rn_common包的288.js文件代表的是Button.js,这个过程中我们在RN框架代码中新增或者删除一个module,下次打包的时候rn_common包时288.js代表的是Alert.js。在业务包中是以id来require 模块的,这就会导致本来引用的是Button,却变成了Alert,这个时候就需要把所有的业务包全部重新打包,这对于携程有上百个业务包的情况是非常不友好的。增量编译能让之前已经打包的模块id保持不变,因此crn-cli必须支持增量编译。

  这里要吐槽以下,这个理论上将不能算增量编译,因为js代码本来就没有编译一说,应该叫做增量打包。我话讲完,

2、原理很简单

    如果需要增量打包,那就把每次打包新增的module和id对应关系保存到一个文件,下次打包的时候再根据这个文件取出id复用。

//baseMapping.json

[
  {
    "id": 0,
    "path": "/crn_common_entry.js"
  },
  {
    &#
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值