uni-app開發經驗分享十四:小程序超過2M限制的方法——分包加載


 
起初小程序上線時,微信限制了代碼包不能超過1MB,后來功能變大變成了2M了,限制大小是出於對小程序啟動速度的考慮,
希望用戶在使用任何一款小程序時,都能獲得一種“秒開”體驗。但是,2MB也限制了小程序功能的擴展,小程序業務的發展
可能需要更大的體積。為了解決這個問題,微信推出了—分包加載。

小程序分包加載

對小程序進行分包,可以優化小程序首次啟動的下載時間,以及在多團隊共同開發時可以更好的解耦協作。

目錄結構:

├── app.js
├── app.json
├── app.wxss
├── packageA
│ └── my
├── packageB
│ └── list
├── pages
│ ├── index
│ └── logs
└── utils

開發者通過在 app.json subpackages或subPackages 字段聲明項目分包結構:

{
  "pages":[
    "pages/index",
    "pages/logs"
  ],
  "subpackages": [
    {
      "root": "packageA",
      "pages": [
        "my"
      ]
    }, {
      "root": "packageB",
      "name": "pack2",
      "pages": [
        "list"
      ]
    }
  ]
}

分包預下載

開發者可以通過配置,在進入小程序某個頁面時,由框架自動預下載可能需要的分包,提升進入后續分包頁面時的啟動速度。對於獨立分包,也可以預下載主包。
分包預下載目前只支持通過配置方式使用,暫不支持通過調用API完成。

配置方法

預下載分包行為在進入某個頁面時觸發,通過在 app.json 增加 preloadRule 配置來控制

{
  "pages": ["pages/index"],
  "subpackages": [
    {
      "root": "sub1",
      "name": "hello",
      "pages": ["index"],
    },
    {
      "root": "sub2",
      "pages": ["index"],
    }
  ],
  "preloadRule": {
    "sub1/index": {
      "packages": ["__APP__"]
    },
    "sub2/index": {
      "packages": ["hello"]
    }
  }
}

preloadRule 中,key 是頁面路徑,value 是進入此頁面的預下載配置,每個配置有以下幾項:

字段 類型 必填 默認值 說明
packages StringArray 進入頁面后預下載分包的 root 或 name。__APP_表示主包。
network String 否- wifi 在指定網絡下預下載,可選值為:all: 不限網絡,wifi: 僅wifi下預下載

打包原則

聲明 subpackages 后,將按 subpackages 配置路徑進行打包,subpackages 配置路徑外的目錄將被打包到 app(主包) 中tabBar 頁面必須在 app(主包)內

分包加載的低版本兼容

由微信后台編譯來處理舊版本客戶端的兼容,后台會編譯兩份代碼包,一份是分包后代碼,另外一份是整包的兼容代碼。 新客戶端用分包,老客戶端還是用的整包,完整包會把各個 subpackage 里面的路徑放到 pages 中。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM