- 为什么分包
因小程序有体积和资源加载限制,各家小程序平台提供了分包方式,优化小程序的下载和启动速度。 - 什么是分包
分包是一种技术,用于将应用程序切分为多个模块并单独安装和更新,从而节省网络流量,提高用户体验。 - 分包的好坏
优势:优化下载时间、解耦协作
劣势:配置和管理上的复杂性增加
注:分包后的项目构成和加载规则也需要开发者仔细考虑和规划,以确保小程序的正确运行和用户体验的优化 - 优化分包
在对应平台的配置(manifest.json)下添加"optimization":{"subPackages":true}开启分包优化目前只支持mp-weixin、mp-qq、mp-baidu的分包优化 - 主包和分包得资源相互引用
主包里面是是全局(组件跟资源)都是可以被分包调用的
调用分包资源可以使用getRequire('../url')的方式请求// Promise异步获取 const getRequire = (url) => { return new Promise((resolve, reject) => { require.async(url).then((res) => { resolve(res) }).catch((err) => { reject(err) }); }) }
- 使用方法:
(1).目录结构┌─pages │ ├─index │ │ └─index.vue │ └─login │ └─login.vue ├─pagesA │ ├─com │ └─list │ └─list.vue ├─pagesB │ ├─com │ └─detail │ └─detail.vue ├─components ├─main.js ├─App.vue ├─manifest.json └─pages.json
(2). pages.json配置
app的分包,同样支持preloadRule,但网络规则无效。{ "pages": [ { "path": "pages/index/index", "style": { ... } }, { "path": "pages/login/login", "style": { ... } } ], "subPackages": [ // 页面分包 { "root": "pagesA", "pages": [ { "path": "list/list", "style": { ... } } ] }, { "root": "pagesB", "pages": [ { "path": "detail/detail", "style": { ... } } ] } ], "preloadRule": { // 页面预加载 "pages/index/index": { "network": "all", "packages": [ "pagesA" ] }, "pagesB/login/login": { "network": "all", "packages": [ "pagesB" ] } } }
字段 类型 必填 默认值 说明 packages StringArray 是 无
进入页面后预下载分包的 root 或 name。__APP__ 表示主包。 network String 否 wifi 在指定网络下预下载,可选值为:all(不限网络)、wifi(仅wifi下预下载)
注:小程序分包跟主主包大小不能超过2M,所有包(主包分包加起来)不能大于16M。
uniapp小程序分包
于 2024-09-05 11:00:17 首次发布