uniapp 分包

340 阅读2分钟
由于小程序有2m的大小限制,所以很多情况下我们不得不采取分包的办法,来避免超过大小。

微信小程序每个分包的大小是2M,总体积一共不能超过20M。

官网文档参考

1、 创建分包目录

在项目根目录下创建分包目录,将需要分包的页面统一放入该目录,可创建多个分包目录,对应不同的分包策略。

一般来讲,我习惯于将分包目录命名为pages_sub_xxx,与原本的pages主目录区分开来。

2、分包配置(pages.json)
// 分包加载,数组对象形式配置,多个分包目录配置多个对象即可
"subPackages": [{
    "root": "pages_sub_xxx", // 子包的根目录,相对于项目根目录的绝对路径
    "pages": [{
        "path": "test/test", // 页面路径,相对于子包目录的相对路径
        "style": {
            "navigationBarTitleText": "测试", // 页面标题
            "enablePullDownRefresh": false // 是否开启下拉刷新
        }
    }]
}]
3、开启分包优化(manifest.json)(可选)

目前只支持mp-weixinmp-qqmp-baidump-toutiao的分包优化

"globalStyle": {
    // 编译到微信小程序样式
    "mp-weixin": {
        // 开启小程序端分包优化
        "optimization":{"subPackages":true}
    }
}




// 从 uni-app 2.7.12+ 开始,App-vue 平台也兼容了小程序的分包配置,但默认并不开启。
// 在 manifest 配置以下节点,可以在 App 端启动分包。
"app-plus": {
    "optimization": {
        "subPackages": true
    },
    "runmode" : "liberate" // 开启分包优化后,必须配置资源释放模式
}
4、分包预加载(manifest.json)(可选)

配置 preloadRule 后,在进入小程序某个页面时,由框架自动预下载可能需要的分包,提升进入后续分包页面时的启动速度

// 分包预加载
"preloadRule": {
    // "pages/my/my" 也可以是某个子包的页面,eg:pages_sub_xxx/test/test
    "pages/my/my": {
        "network": "all",
        "packages": ["pages_sub_xxx"] // 子包 root
    }
}