问题:
在我的一个项目(uniapp的微信小程序)中,项目一开始没有管主包大小,只管埋头开发,但是到需要发布的时候,发现主包大小竟然有10mb,完全不满足小于2mb的需求,于是我开始尝试减少主包大小
方法一:
最简单的方法,开启文件压缩,勾选运行时是否压缩,勾选之后再运行,这一步已经能够解决大部分的情况了,我的包大小从10mb减小到了4mb,仍然无法满足需求
方法二:
删除无用依赖和文件
删除无用依赖大家可以通过微信小程序的代码依赖分析功能来
可以看到有一个无依赖代码文件数,可以通过这个找到无用的依赖代码,下面的是我删除之后的,删除之前有一个1mb大小的无用依赖,然后还删除了一些无用的代码,零零散散减少了几十kbok,现在大小来到3mb,还是不符合需求
方法三:
对项目进行分包
这个方法对于已经开发了很多的项目来说,会非常痛苦,因为需要大量移动文件,但是,谁让当初没有注意分包呢呜呜,开干吧
分包步骤:
1.在manifest.json文件中开启分包
"mp-weixin" : { "optimization" : { "subPackages" : true } },
2.在page.json文件里面进行配置
语法如下
"pages": [ ], "subPackages":[//于pages同级 { "root":"pages_dam_mdm",//页面所在文件夹名称 "pages":[ { "path" : "mdm/CAMERA/index",//不需要加上root,其余规则与pages内的相同 "style" : { "navigationBarTitleText" : "视频监视" } } ] } ]
目录结构如下
并且分包内的页面,能使用主页面的组件但是主页面的不能使用分页面的组件
分页之前,我们需要明确,哪些页面应该合在一起,尽可能使,分包内的页面只在自己包内使用组件,减少主包的组件,这样能够减少主包大小,而且最重要的一点,依赖相同的页面尽可能在同一个分包内,比如你有多个页面使用了echarts组件(注意,这个组件非常非常大),如果这些文件分散在不同的包里面,uniapp会将依赖打入主包中,增加主包负担!
然后我就开始慢慢开始分包,但是一开始我发现每个分包(已经分了不少文件)只能分出几十顶多一百多kb,这就很奇怪,看样子根本不能明显缩小主包,知道我将所有使用了echart组件的页面分在一个包内,刷,主包直接小了1mb!也就是上文提到的情况
可以看到分包效果十分显著,主要的内存就是由echart依赖导致的,因此以后我们开发的时候一定要注意分包问题,以及大型依赖放入同一分包下的重要性
总结:
第一步:开启文件压缩
第二步:删除无用依赖和文件
第三步:进行分包(使用了相同依赖的包尽可能放在同一包内)