game.json 配置分包,相关详情如下。├── game.js├── game.json├── images│ ├── a.png│ ├── b.png├── stage1│ └── game.js│ └── images│ ├── 1.png│ ├── 2.png└── stage2.js└── utils
game.json 中的配置:{..."subpackages": [{"name": "stage1","root": "stage1/" // 可以指定一个目录,目录根目录下的 game.js 会作为入口文件,目录下所有资源将会统一打包}, {"name": "stage2","root": "stage2.js" // 也可以指定一个 JS 文件}]...}
subpackages 中,每个分包的配置有以下几项:subpackages 后,将按 subpackages 配置路径进行打包,subpackages 配置路径外的目录将被打包到主包中。subpackage 的根目录不能是另外一个 subpackage 内的子目录。packageA 无法 require packageB JS 文件,但可以 require 主包、packageA 内的 JS 文件。packageA 无法使用 packageB 的资源,但可以使用主包、packageA 内的资源。wx.loadSubpackage接口预下载主包或其他分包,并在合适时机(例如用户点击开始游戏时)执行已下载的代码包逻辑。.├── game.js├── game.json├── moduleA│ └── game.js├── moduleB│ └── game.js└── utils
game.json的subpackages字段中对应的分包配置项中定义independent字段声明对应分包为独立分包。{"subPackages": [{"name": "moduleA","root": "/moduleA/", // 普通分包},{"independent": true, // 独立分包,指定一个目录,目录根目录下的 game.js 会作为入口文件,目录下所有资源将会统一打包"name": "moduleB","root": "/moduleB/",}]}
// 分享给好友、群wx.shareAppMessage({title: '分享标题',imageUrl: 'xx.jpg',query: 'a=1&b=2',path: '/moduleB/' // path 为 game.json 配置中独立分包的 root})// 分享到朋友圈wx.onShareTimeline({title: '分享标题',imageUrl: 'xx.jpg',query: 'a=1&b=2',path: '/moduleB/' // path 为 game.json 配置中独立分包的 root})// 添加到收藏wx.addToFavorites({title: '收藏标题',imageUrl: 'xx.jpg',query: 'a=1&b=2',path: '/moduleB/' // path 为 game.json 配置中独立分包的 root})
const loadTask = wx.loadSubpackage({name: '/moduleA/', // 下载其他分包success(res) {console.log('load moduleA success', res)},fail(err) {console.error('load moduleA fail', err)}})
wx.shareAppMessage参数或wx.onShareAppMessage回参中的path必须是game.json中定义的独立分包的root字段。const loadTask = wx.loadSubpackage({name: 'stage1', // name 可以填 name 或者 rootsuccess: function(res) {// 分包加载成功后通过 success 回调},fail: function(res) {// 分包加载失败通过 fail 回调}})loadTask.onProgressUpdate(res => {console.log('下载进度', res.progress)console.log('已经下载的数据长度', res.totalBytesWritten)console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite)})
// 预加载const loadTask = wx.preDownloadSubpackage({name: 'stage1',success: function(res) {// 分包预加载成功后通过 success 回调},fail: function(res) {// 分包预加载失败通过 fail 回调}})loadTask.onProgressUpdate(res => {console.log('下载进度', res.progress)console.log('已经下载的数据长度', res.totalBytesWritten)console.log('预期需要下载的数据总长度', res.totalBytesExpectedToWrite)})// 在合适的时机执行分包代码逻辑wx.loadSubpackage({name: 'stage1'})
文档反馈