小程序包体积优化
Posted wen_rc
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了小程序包体积优化相关的知识,希望对你有一定的参考价值。
小程序毕竟是在移动端加载的,包体积肯定是越小越好的,这里分享下思路和工具
思路
分包
小程序可以分包,但插件就不行了,只能用以下其他思路
tree shaking
j即s移除未引用的代码。参考这里
假设有文件有两个函数
export function square(x)
return x * x;
export function cube(x)
return x * x * x;
但实际只用到了一个
import cube from './math.js';
那其实另一个函数不用打包,在webpack里这样设置即可不打包
- 使用 ES2015 模块语法(即 import 和 export)。
- 确保没有 compiler 将 ES2015 模块语法转换为 CommonJS 模块(这也是流行的 Babel preset 中 @babel/preset-env 的默认行为 - 更多详细信息请查看 文档)。
- 在项目 package.json 文件中,添加一个 “sideEffects” 属性。
- 通过将 mode 选项设置为 production,启用 minification(代码压缩) 和 tree shaking。
这次项目用到了echarts,在小程序里的echarts不能tree shaking 只能打需要的包
生产环境别打包测试代码
有些代码可能只是测试时用到的,这些在生产环境不要打包进去。比如在app.json里去掉测试用的页面。
我的项目是小程序插件,用了mpflow,那这样配置mpflow.config.js的plugin项即可
module.exports =
...
plugin: mode=> (mode === 'production'? 'src/plugin/plugin' : 'src/plugin/plugin-dev'),
...
plugin是生产环境用的,测试的页面不要加到page就可以。
weui可以用拓展库
如果你的项目用了WeUI组件库,那可以不用npm引入,用拓展库,那weui就不算体积了。
不过不确定插件能不能用,我这里是小程序插件项目,然后是引入的npm包里用了weui,我想用拓展库替代,mpflow打包正常,开发者工具也没报错,但实际出来的代码里面,是没有weui组件的……不知道是哪里搞错了
代码重构
既减少体积,也提高可读性!
css的tree shaking
因为项目里用到的比较少,所以我是手动做的,几分钟搞定,似乎有工具来帮忙完成。比如这个。之后其他项目可以试试
分析工具
有了思路,还得知道哪里能够优化,微信开发者工具就有很好用的一个功能。在编辑器点下这个按钮就能分析了。
随便选一个点进去还能看到依赖关系,
之后点目录找到对应文件,就推导出到底是哪些文件占用空间大,然后就能用上面的思路去优化了。
以上是关于小程序包体积优化的主要内容,如果未能解决你的问题,请参考以下文章