小程序包体积优化

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里这样设置即可不打包

  1. 使用 ES2015 模块语法(即 import 和 export)。
  2. 确保没有 compiler 将 ES2015 模块语法转换为 CommonJS 模块(这也是流行的 Babel preset 中 @babel/preset-env 的默认行为 - 更多详细信息请查看 文档)。
  3. 在项目 package.json 文件中,添加一个 “sideEffects” 属性。
  4. 通过将 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

因为项目里用到的比较少,所以我是手动做的,几分钟搞定,似乎有工具来帮忙完成。比如这个。之后其他项目可以试试

分析工具

有了思路,还得知道哪里能够优化,微信开发者工具就有很好用的一个功能。在编辑器点下这个按钮就能分析了。


随便选一个点进去还能看到依赖关系,
之后点目录找到对应文件,就推导出到底是哪些文件占用空间大,然后就能用上面的思路去优化了。

以上是关于小程序包体积优化的主要内容,如果未能解决你的问题,请参考以下文章

小程序包体积优化

小程序体积优化--优化大文本

Android 性能优化 ~ 包体积优化实战

iOS包体积优化实践

Android包体积优化上篇- 资源混淆优化

大牛耗时一年:深入探索 Android 包体积优化,共三万字建议收藏上