遇到情況:
預覽小程序時,提示 “Error: 代碼包大小爲 2491 kb,上限爲 2048 kb請刪除文件後重試”
看了一下官方說明如下:
目前小程序分包大小有以下限制:
解決方案:
對小程序進行分包,可以優化小程序首次啓動的下載時間,以及在多團隊共同開發時可以更好的解耦協作。在小程序啓動時,默認會下載主包並啓動主包內頁面,當用戶進入分包內某個頁面時,客戶端會把對應分包下載下來,下載完成後再進行展示。
總結如下:
打開小程序,默認先加載主包
進入分包頁面時,再加載對應分包
這樣的好處是進入主包頁面時,需要下載的代碼量小了很多,白屏時間更短,體驗更佳。
分包的方法:
假設支持分包的小程序目錄結構如下:
├── app.js
├── app.json
├── app.wxss
├── packageA
│ └── pages
│ ├── cat
│ └── dog
├── packageB
│ └── pages
│ ├── apple
│ └── banana
├── pages
│ ├── index
│ └── logs
└── utils
開發者通過在 app.json subpackages
字段聲明項目分包結構:
{
"pages":[
"pages/index",
"pages/logs"
],
"subpackages": [
{
"root": "packageA",
"pages": [
"pages/cat",
"pages/dog"
]
}, {
"root": "packageB",
"name": "pack2",
"pages": [
"pages/apple",
"pages/banana"
]
}
]
}
subpackages
中,每個分包的配置有以下幾項:
字段 | 類型 | 說明 |
---|---|---|
root | String | 分包根目錄 |
name | String | 分包別名,分包預下載時可以使用 |
pages | StringArray | 分包頁面路徑,相對與分包根目錄 |
independent | Boolean | 分包是否是獨立分包 |
打包原則
- 聲明
subpackages
後,將按subpackages
配置路徑進行打包,subpackages
配置路徑外的目錄將被打包到 app(主包) 中 - app(主包)也可以有自己的 pages(即最外層的 pages 字段)
subpackage
的根目錄不能是另外一個subpackage
內的子目錄tabBar
頁面必須在 app(主包)內
引用原則
packageA
無法 requirepackageB
JS 文件,但可以 requireapp
、自己 package 內的 JS 文件packageA
無法 importpackageB
的 template,但可以 requireapp
、自己 package 內的 templatepackageA
無法使用packageB
的資源,但可以使用app
、自己 package 內的資源
低版本兼容
由微信後臺編譯來處理舊版本客戶端的兼容,後臺會編譯兩份代碼包,一份是分包後代碼,另外一份是整包的兼容代碼。 新客戶端用分包,老客戶端還是用的整包,完整包會把各個 subpackage
裏面的路徑放到 pages 中。