在uniAPP下小程序分包配置

1,427 阅读3分钟

这是我参与8月更文挑战的第3天,活动详情查看: 8月更文挑战

基本概念

在构建小程序分包项目时,构建会输出一个或多个分包。每个使用分包小程序必定含有一个主包。所谓的主包,即放置默认启动页面/TabBar 页面,以及一些所有分包都需用到公共资源/JS 脚本;而分包则是根据开发者的配置进行划分。在uniAPP中根据pages.json配置划分。

在小程序启动时,默认会下载主包并启动主包内页面,当用户进入分包内某个页面时,客户端会把对应分包下载下来,下载完成后再进行展示。

分包限制

目前微信小程序分包大小有以下限制:

  • 整个小程序所有分包大小不超过 16M
  • 单个分包/主包大小不能超过 2M 对小程序进行分包,可以优化小程序首次启动的下载时间,以及在多团队共同开发时可以更好的解耦协作

uniAPP中分包

  • subPackages 里的pages的路径是 root 下的相对路径,不是全路径。
  • 分包下支持独立的 static 目录,用来对静态资源进行分包。
  • uni-app内支持对微信小程序、QQ小程序、百度小程序分包优化,即将静态资源或者js文件放入分包内不占用主包大小。
  • 针对vendor.js过大的情况可以使用运行时压缩代码
    • HBuilderX创建的项目勾选运行-->运行到小程序模拟器-->运行时是否压缩代码
    • cli创建的项目可以在pacakge.json中添加参数--minimize,示例: "dev:mp-weixin": "cross-env NODE_ENV=development UNI_PLATFORM=mp-weixin vue-cli-service uni-build --watch --minimize"

uniApp中分包优化

  • 在对应平台的配置下添加"optimization":{"subPackages":true}开启分包优化
  • 目前只支持mp-weixin、mp-qq、mp-baidu的分包优化

分包优化具体逻辑:

  • 静态文件:分包下支持 static 等静态资源拷贝,即分包目录内放置的静态资源不会被打包到主包中,也不可在主包中使用
  • js文件:当某个 js 仅被一个分包引用时,该 js 会被打包到该分包内,否则仍打到主包(即被主包引用,或被超过 1 个分包引用)
  • 自定义组件:若某个自定义组件仅被一个分包引用时,且未放入到分包内,编译时会输出提示信息

总结:

  • 小程序正式版开启代码压缩,既可以减小分包大小,也可以优化加速
  • 独有的静态资源和js文件一定要放到使用的分包中,否则会占用主包空间,拖慢速度
  • 导入外部组件,要按需引入,且使用生产代码
  • 在开发初始就应该规划好分包,主包尽量做到最小。为以后迭代留出空间
  • 静态资源所占空间如果过大,可以考虑上传图床或者压缩图片的方式,以减打包空间