小程序 - 分包加载上限8M(一)
使用分包
配置方法
假设支持分包的小程序目录结构如下
├── app.js ├── app.json ├── app.wxss ├── packageA │ └── pages │ ├── cat │ └── dog ├── packageB │ └── pages │ ├── apple │ └── banana ├── pages │ ├── index │ └── logs └── utils
开发者通过在 app.jsonsubpackages字段声明项目分包结构:
写成 subPackages 也支持。
{ "pages": ["pages/index", "pages/logs"], "subpackages": [ { "root": "packageA", "pages": ["pages/cat", "pages/dog"] }, { "root": "packageB", "name": "pack2", "pages": ["pages/apple", "pages/banana"] } ] }

打包原则
- 声明
subpackages后,将按subpackages配置路径进行打包,subpackages配置路径外的目录将被打包到 app(主包) 中 - app(主包)也可以有自己的 pages(即最外层的 pages 字段)
subpackage的根目录不能是另外一个subpackage内的子目录tabBar页面必须在 app(主包)内
引用原则
packageA无法 requirepackageBJS 文件,但可以 requireapp、自己 package 内的 JS 文件packageA无法 importpackageB的 template,但可以 requireapp、自己 package 内的 templatepackageA无法使用packageB的资源,但可以使用app、自己 package 内的资源
低版本兼容
由微信后台编译来处理旧版本客户端的兼容,后台会编译两份代码包,一份是分包后代码,另外一份是整包的兼容代码。 新客户端用分包,老客户端还是用的整包,完整包会把各个 subpackage 里面的路径放到 pages 中。
示例代码:分包使用主包js,其它的同理
app.json
{ "pages": [ "pages/login/login" ], "subPackages": [ { "root": "package-aaa", "pages": [ "pages/home/home" ] }, { "root": "package-bbb", "pages": [ "pages/goods/goods", "pages/order/order" ] } ], "window": { "backgroundTextStyle": "light", "navigationBarBackgroundColor": "#fff", "navigationBarTitleText": "分包", "navigationBarTextStyle": "black" } }
logon.xml
<button type="primary" bindtap="shopGoods"> shopGoods </button>
login.js
shopGoods: function (e) { // if (e) { wx.navigateTo({ url: '/package-bbb/pages/goods/goods' }) } },
跳转分包,,分包获取公共数据
goods.xml
<text> {{time}} </text>
goods.js
const util = require('../../../utils/util.js')
const _api = require('../../../utils/api.js')
Page({
/**
* 页面的初始数据
*/
data: {
time: '',
env:''
},
/**
* 生命周期函数--监听页面加载
*/
onLoad: function (options) {
let _time = new Date();
let t = util.formatTime(_time)
this.setData({
time: t
})
},
显示结果:

浙公网安备 33010602011771号