1. 程式人生 > >微信小程序分包加載

微信小程序分包加載

啟動頁 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 無法 require packageB JS 文件,但可以 require app、自己 package 內的 JS 文件
    • packageA 無法 import packageB
      的 template,但可以 require app、自己 package 內的 template
    • packageA 無法使用 packageB 的資源,但可以使用 app、自己 package 內的資源

微信小程序分包加載