微信小程序的分包机制可以有效解决小程序包体积过大的问题,提高首次启动速度。以下是微信小程序分包的详细操作步骤和流程:

一、分包基本概念

  • 主包:包含启动页和全局资源,所有分包都可以访问主包资源
  • 分包:按功能模块划分的子包,按需加载
  • 独立分包:可以独立于主包运行的分包(如营销活动页)
  • 分包预下载:在特定场景下提前下载可能需要的分包

二、分包操作步骤

1. 项目结构调整

按功能模块创建分包目录,标准结构如下:

├── app.js
├── app.json
├── app.wxss
├── pages/                 # 主包页面
│   ├── index/             # 主包首页
│   └── logs/              # 主包其他页面
├── packageA/              # 分包A
│   ├── pages/
│   │   ├── pageA1/
│   │   └── pageA2/
│   └── utils/             # 分包A私有资源
├── packageB/              # 分包B
│   ├── pages/
│   │   ├── pageB1/
│   │   └── pageB2/
│   └── components/        # 分包B私有组件
└── utils/                 # 主包公共资源

在 app.json 中配置分包结构:

{
  "pages": [
    "pages/index/index",    // 主包页面
    "pages/logs/logs"
  ],
  "subpackages": [
    {
      "root": "packageA",   // 分包A根目录
      "name": "packA",      // 分包名称(可选)
      "pages": [            // 分包A页面路径
        "pages/pageA1/pageA1",
        "pages/pageA2/pageA2"
      ],
      "independent": false  // 是否为独立分包(默认false)
    },
    {
      "root": "packageB",   // 分包B根目录
      "name": "packB",
      "pages": [
        "pages/pageB1/pageB1",
        "pages/pageB2/pageB2"
      ],
      "independent": true   // 独立分包
    }
  ],
  "preloadRule": {          // 分包预下载规则
    "pages/index/index": {  // 当进入主包首页时
      "network": "all",     // 所有网络环境都预下载
      "packages": ["packageA"]  // 预下载分包A
    },
    "packageA/pages/pageA1/pageA1": {  // 当进入分包A的pageA1时
      "network": "wifi",    // 仅在wifi环境下预下载
      "packages": ["packageB"]  // 预下载分包B
    }
  },
  "window": {
    "backgroundTextStyle": "light",
    "navigationBarBackgroundColor": "#fff",
    "navigationBarTitleText": "分包示例",
    "navigationBarTextStyle": "black"
  }
}
分包页面跳转

使用 wx.navigateTo 或 <navigator> 组件跳转到分包页面,路径需包含分包根目录:

// 跳转到分包A的页面
wx.navigateTo({
  url: '/packageA/pages/pageA1/pageA1'
})
<!-- 在wxml中跳转 -->
<navigator url="/packageB/pages/pageB1/pageB1">
  前往分包B的pageB1页面
</navigator>
分包资源引用
  • 分包内的资源(图片、组件等)优先使用相对路径
  • 分包可以引用主包资源,但不能引用其他分包的资源
  • 主包不能引用分包内的资源
独立分包特殊配置

独立分包可以不依赖主包运行,适合营销活动等场景:

  • 在 app.json 中设置 "independent": true
  • 独立分包中不能调用主包的 app.js 中的方法
  • 独立分包中 getApp() 获取的是独立分包自身的 App 实例

三、分包大小限制

  • 整个小程序所有分包大小不超过 20MB
  • 单个主包 / 分包大小不能超过 2MB

四、分包调试与发布

  1. 本地调试:

    • 使用微信开发者工具直接运行,工具会自动处理分包加载
    • 在「详情」→「本地设置」中可查看分包大小信息
  2. 发布流程:

    • 与普通小程序发布流程相同,上传代码时开发者工具会自动进行分包处理
    • 在微信公众平台可以查看各分包的大小统计

五、注意事项

  1. 避免将常用页面放入分包,影响首次加载体验
  2. 合理规划分包粒度,避免分包过多或过大
  3. 独立分包尽量减少对主包的依赖
  4. 预下载规则要合理设置,避免浪费用户流量

通过合理的分包策略,可以显著提升小程序的加载速度和用户体验,尤其适合功能复杂、页面较多的小程序。

Logo

北京人形旗下天工造物具身智能开源社区,聚焦具身天工与慧思开物两大平台

更多推荐