微信小程序分包加載
阿新 • • 發佈:2018-09-07
啟動頁 bpa 支持 bsp 根目錄 color 頁面 root 首頁
分包加載
某些情況下,開發者需要將小程序劃分成不同的子包,在構建時打包成不同的分包,用戶在使用時按需進行加載。
在構建小程序分包項目時,構建會輸出一個或多個功能的分包,其中每個分包小程序必定含有一個主包,所謂的主包,即放置默認啟動頁面/TabBar 頁面,以及一些所有分包都需用到公共資源/JS 腳本,而分包則是根據開發者的配置進行劃分。
在小程序啟動時,默認會下載主包並啟動主包內頁面,如果用戶需要打開分包內某個頁面,客戶端會把對應分包下載下來,下載完成後再進行展示。
目前小程序分包大小有以下限制:
- 整個小程序所有分包大小不超過 4M
- 單個分包/主包大小不能超過 2M
對小程序進行分包,可以優化小程序首次啟動的下載時間,以及在多團隊共同開發時可以更好的解耦協作。
使用方法
假設支持分包的小程序目錄結構如下:
├── 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","pages": [ "pages/apple", "pages/banana" ] } ] }
打包原則
- 聲明
subPackages
後,將按subPackages
配置路徑進行打包,subPackages
配置路徑外的目錄將被打包到 app(主包) 中 - app(主包)也可以有自己的 pages(即最外層的 pages 字段)
subPackage
的根目錄不能是另外一個subPackage
內的子目錄- 首頁的 TAB 頁面必須在 app(主包)內
引用原則
packageA
無法 requirepackageB
JS 文件,但可以 requireapp
、自己 package 內的 JS 文件packageA
無法 importpackageB
app
、自己 package 內的 templatepackageA
無法使用packageB
的資源,但可以使用 app、自己 package 內的資源
微信小程序分包加載