分包加载与云开发
基于微信小程序(基础库 3.x)· 核于 2026-07
速查
- 分包动机:突破主包体积上限、加快首次启动(首屏只下主包)
- 体积限制(现行):主包 ≤ 2MB、单个分包 ≤ 2MB、所有分包 + 主包总和 ≤ 20MB(普通小程序;小游戏开虚拟支付 ≤ 30MB)
- 分包规则:
app.json里配subPackages(root/name/pages);tabBar 页必在主包;分包间不能互相引用资源(都能引主包) - 分包进阶三特性:
preloadRule(分包预下载) /"independent": true(独立分包,脱离主包运行) / 分包异步化(require(path, cb)跨分包引 JS 与组件) - 云开发定位:微信 + 腾讯云的 Serverless 方案,无需自建服务器,微信私有协议天然鉴权
- 云开发四大能力:云数据库(文档型,类 MongoDB) / 云存储(带 CDN 文件存储) / 云函数(云端 Node,天然鉴权) / 云调用(云函数内免鉴权调开放接口)
- 云开发 API:
wx.cloud.init({ env })初始化;wx.cloud.database().collection().add()读写;wx.cloud.callFunction({ name, data })调云函数
一、分包加载:动机与配置
小程序主包有体积上限,包越大首次启动下载越慢。分包把非首屏功能拆成独立包,首屏只下载主包,进入分包页面时再按需下载对应分包。
在 app.json 用 subPackages 声明分包(每个分包一个 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 与性能优化。