小程序应用篇:分包治理策略
****javascript
{
"pages":[
"pages/index/index"
],
"subpackages":[{
"root":"sub-pages",
"pages":[
"test/index"
]
}],
"window":{
"backgroundTextStyle":"light",
"navigationBarBackgroundColor": "#fff",
"navigationBarTitleText": "Weixin",
"navigationBarTextStyle":"black"
},
"style": "v2",
"sitemapLocation": "sitemap.json"
}
javascript
function sayHello(){
console.log('分包页面')
}
export default sayHello
javascript
<view>
前端开发实践指南
<button bindtap="handleRouterGo" >跳转到分包</button>
<button bindtap="handleCallFun" >测试分包方法</button>
</view>
javascript
import say from '../../sub-pages/utils'
Page({
data:{
loading:true
},
handleRouterGo(){
wx.navigateTo({
url: '/sub-pages/test/index',
success: function(res){
// success
},
fail: function() {
// fail
},
complete: function() {
// complete
}
})
},
handleCallFun(){
say()
}
})
javascript
{
"pages":[
"pages/index",
"pages/logs"
],
"subpackages": [
{
"root": "packageA",
"pages": [
"pages/cat",
"pages/dog"
]
}, {
"root": "packageB",
"name": "pack2",
"pages": [
"pages/apple",
"pages/banana"
]
}
]
}
****json
{
"pages":[
"pages/index/index"
],
"subpackages":[{
"root":"sub-pages",
"pages":[
"test/index"
],
"independent": true
}],
}
********json
{
"pages":[
"pages/index/index"
],
"subpackages":[{
"root":"sub-pages",
"pages":[
"test/index"
]
}],
"preloadRule":{
"pages/index/index":{
"packages":["sub-pages"]
}
},
}
xml
<button>业务分包 sub-button 组件</button>
json
{
"usingComponents": {
"sub-button":"../../sub-pages/test/components/button"
},
"componentPlaceholder":{
"sub-button":"view"
}
}
xml
<view>
大前端开发实践指南
<button bindtap="handleRouterGo" >跳转到分包</button>
<button bindtap="handleCallFun" >测试分包方法</button>
<sub-button />
</view>
javascript
// subPackageA/index.js
// 使用回调函数风格的调用
require('../subPackageB/utils.js', utils => {
console.log(utils.whoami) // Wechat MiniProgram
}, ({mod, errMsg}) => {
console.error(`path: ${mod}, ${errMsg}`)
})
// 或者使用 Promise 风格的调用
require.async('../commonPackage/index.js').then(pkg => {
pkg.getPackageName() // 'common'
}).catch(({mod, errMsg}) => {
console.error(`path: ${mod}, ${errMsg}`)
})
javascript
function sayHello(){
console.log('分包方法')
}
export default sayHello
java
handleCallFun(){
require('../../sub-pages/utils',(moduleFun)=>{
moduleFun.default()
})
}
shell
├── app.js
├── app.json
├── app.wxss
├── 业务A
│ └── pages
│ ├── 业务A页面一
│ └── 业务A页面二
├── 业务B
│ └── pages
│ ├── 业务B页面一
│ └── 业务B页面二
├── ...其他业务分包
├── 主包
│ ├── 主页面一
│ └── 主页面二
└── 公共方法等