Skip to content

小程序应用篇:分包治理策略

****

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页面二
├── ...其他业务分包
├── 主包
   ├── 主页面一
   └── 主页面二
└── 公共方法等

前端知识体系 · wcrane