1、Taro的echart组件,无论怎么处理都蛮大,450kb左右,放到主包中,肯定会超大小,所以放到分包页面、配置echart文件目录的alisa之后,只要有两个不同的分包页面引入该echart就会导致eachrt的分包策略失败,抽离到common.js中去了,这个体积大概是500kb
如果一定要主包中展示echart不妨换个思路,把echart模块当做一个插件发布,然后引入插件
2、如果多个页面引入了同样的小图片,可能会被处理成base64打到venders或者commons.js中去,虽然不多,四五张小图标就好几十kb了,最好是放到分包中或者走cdn
3、一些比较重的库momentjs可以换做dayjs,或者仅仅用到一些库中的部分方法,可以考虑只拷贝其中的函数出来,减少体积
4、开启编译打包分析,默认是关闭的
mini: {
webpackChain (chain) {
chain.plugin('analyzer')
.use(require('webpack-bundle-analyzer').BundleAnalyzerPlugin, [])
}
}
最好的方式是不要用 Taro,Taro的运行时太重了,一个空项目,Taro打包出来的体积是 uni-app 的两到三倍,如果uni-app用vite,Taro 就是uni-app 的三到四倍。
最优方案是原生语法,有跨端需求就使用 uni-app 或者自己封装一个简单的只跨小程序平台的模板