Skip to content

分包加载与云开发

基于微信小程序(基础库 3.x)· 核于 2026-07

速查

  • 分包动机:突破主包体积上限、加快首次启动(首屏只下主包)
  • 体积限制(现行)主包 ≤ 2MB单个分包 ≤ 2MB所有分包 + 主包总和 ≤ 20MB(普通小程序;小游戏开虚拟支付 ≤ 30MB)
  • 分包规则app.json 里配 subPackagesroot/name/pages);tabBar 页必在主包分包间不能互相引用资源(都能引主包)
  • 分包进阶三特性preloadRule(分包预下载) / "independent": true(独立分包,脱离主包运行) / 分包异步化(require(path, cb) 跨分包引 JS 与组件)
  • 云开发定位:微信 + 腾讯云的 Serverless 方案,无需自建服务器,微信私有协议天然鉴权
  • 云开发四大能力云数据库(文档型,类 MongoDB) / 云存储(带 CDN 文件存储) / 云函数(云端 Node,天然鉴权) / 云调用(云函数内免鉴权调开放接口)
  • 云开发 APIwx.cloud.init({ env }) 初始化;wx.cloud.database().collection().add() 读写;wx.cloud.callFunction({ name, data }) 调云函数

一、分包加载:动机与配置

小程序主包有体积上限,包越大首次启动下载越慢。分包把非首屏功能拆成独立包,首屏只下载主包,进入分包页面时再按需下载对应分包。

app.jsonsubPackages 声明分包(每个分包一个 root 目录):

json
{
  "pages": ["pages/index/index"],
  "subPackages": [
    {
      "root": "packageA",
      "name": "pkgA",
      "pages": ["pages/cat/cat", "pages/dog/dog"]
    }
  ]
}
  • root:分包根目录;pages:该分包内的页面(路径相对 root)。
  • 分包外的代码归主包;主包 + 分包按需下载。

二、体积限制与规则(关键数值)

上限
主包≤ 2MB
单个分包≤ 2MB
整个小程序(主包 + 所有分包)≤ 20MB(普通小程序)
小游戏(开虚拟支付)≤ 30MB

规则:

  • tabBar 页面必须在主包(分包里不能放 tab 页)。
  • 分包之间不能互相引用资源,但都能引用主包的公共代码 / 组件。
  • 首次进入某分包页面时才下载该分包,之后缓存。

三、分包进阶三特性

  • 分包预下载 preloadRule:在 app.json 配置「进入某页时后台预下载指定分包」,用户还没点就先下好,进一步加速。
  • 独立分包 "independent": true:可脱离主包独立运行——不下载主包即可打开该分包页面(适合活动页 / 广告落地页,追求极致首开),但无法使用主包的公共逻辑
  • 分包异步化:用 require(path, callback) / requirePlugin 异步跨分包引用 JS 与自定义组件,绕过「分包间不能引用」的限制

四、云开发(CloudBase):Serverless 后端

云开发是微信联合腾讯云推出的 Serverless 方案——无需自建服务器与运维,前端可直接调用,且基于微信私有协议天然鉴权(免去大量登录态校验样板)。

它提供四大能力:

  • 云数据库:文档型数据库(类 MongoDB),前端与云函数都能读写。
  • 云存储:带 CDN 的文件存储,前端可直传直下 + 可视化管理。
  • 云函数:跑在云端的 Node.js 代码,天然鉴权,只写业务逻辑。
  • 云调用:在云函数内免鉴权调用微信开放接口(如发模板消息)。
javascript
// app.js —— 初始化云环境
wx.cloud.init({ env: 'your-env-id' })

// 云数据库:新增一条记录
const db = wx.cloud.database()
db.collection('todos').add({ data: { title: '学习小程序' } })

// 调用云函数
wx.cloud.callFunction({ name: 'login', data: {} })

云开发正持续向 AI 化演进(如云开发 Copilot、AI 能力集成),具体产品名与能力边界以官方最新文档为准

下一步:把渲染性能推向原生的 Skyline 引擎与性能优化清单,见 Skyline 与性能优化