[wepy]清理多余wxml文件
目前wepy编译时会将组件的dom部分拼合到页面中,而不生成单独的wxml文件。
但若组件所在文件路径不含\'/components/\',则编译环节wepy不会识别其为组件,会按\'Other\'类型处理,从而生成多余的wxml文件和json文件。
确保组件都放在components目录下可以避免这部分多余空间消耗。
清理大文件
大文件常常存在较大的压缩空间,值得重点排查和处理。
查找大文件tip:资源管理器 - 代码目录 - 搜索\'*\' - 右键 - 排序方式:大小,即可将代码包内所有文件按大小排序展示
资源压缩
大部分资源都可以进行适当压缩,常常可以在保证功能体验的同时,有效地减少空间占用。参考工具:
js压缩: 配置wepy-plugin-uglifyjs插件
json、wxml压缩: 配置wepy-plugin-filemin插件
less压缩: 配置wepy-compiler-less插件
图片压缩: 配置wepy-plugin-imagemin插件、TinyPNG
其中TinyPNG工具压缩效果非常可观,400KB的图片压到40KB不足为奇,并且画质感知上几乎无损。
资源合并
功能类似的资源可以归一化,减少重复空间占用。
需求层面,比如不同运营活动可以采用统一模板,而不每次增加单独页面等;
样式层面,比如可以统一弹窗规范,而不引入五花八门的零碎弹窗组件等;
设计开发层面,比如可以尽量解耦合抽取公共组件,减少重复造轮子等。
[wepy]清理组件DOM冗余拷贝?
观察发现,目前wepy的组件实现中,编译后页面对组件js、wxss的引用是通过require、@import的形式实现的,而对组件dom的引用则是直接拼合到页面wxml文件中。
这导致,当一个组件被多处引用时,其dom内容会有多份冗余拷贝。
e.g. 10个页面引用了组件A => 编译出的10个页面wxml各含一份A的dom,A的template部分在代码包中被原模原样重复了10次
如果修改wepy编译过程,将组件dom引用过程改为使用include或原生组件(基础库1.6.3开始支持)实现,应当可以节省这部分冗余开销。
[wepy]压缩自动生成的代码量?
观察发现,代码包中除了手动维护的业务代码之外,也有不少框架/插件自动生成的代码。如源码编译过程中生成的辅助代码、兼容ES678语法引入的垫片代码、兼容各运行环境引入的css前缀代码等。
通过对框架和插件进行修改/配置,应当可以一定程度减少这部分空间开销。比如对babel插件进行规则配置、对auto-prefix插件进行最低版本配置,应当可以牺牲部分不必要的兼容性,从而减少垫片代码的生成量等。诸如此类。
只是笔者未及尝试,尚不确定这部分开销是否有可观的压缩空间。
压缩额外文件空间?
观察发现,代码包大小总是比代码内容总大小大得多(上传后详情面板中“上次上传”、“上次预览”总是比“本地代码”大得多)。
这部分额外大小应当也是存在压缩空间的。比如将细碎图片、细碎js文件、细碎less文件拼合成雪碧图、js库、less库等较大文件,应当可以减少由于文件最小存储单元引入的额外空间开销等。诸如此类。
只是笔者未及尝试,尚不确定这部分开销是否有可观的压缩空间。
由于轻量级特性,小程序开发环境中,对代码包体积的控制是十分必要且十分有意义的。
本文介绍了代码包体积压缩的一些策略、方案和几个未及实践的思路。总的来说,就是尽量精简,尽量只将最核心最必要最紧急的内容放在代码包内。其它资源过多占用代码包空间时,则考虑通过搬移/删除/压缩/合并等方式予以释放。
拙劣之处欢迎不吝赐教。
如果你喜欢我们的文章,关注我们的公众号和我们互动吧。