微信小程序小結(4) -- 分包加載及小程序間跳轉
分包加載
某些情況下,開發者需要將小程序劃分成不同的子包,在構建時打包成不同的分包,用戶在使用時按需進行加載(主要是空間不夠用,哈哈~)。
在構建小程序分包項目時,構建會輸出一個或多個功能的分包,其中每個分包小程序必定含有一個主包,所謂的主包,即放置默認啟動頁面/TabBar 頁面,以及一些所有分包都需用到公共資源/JS 腳本,而分包則是根據開發者的配置進行劃分。
在小程序啟動時,默認會下載主包並啟動主包內頁面,如果用戶需要打開分包內某個頁面,客戶端會把對應分包下載下來,下載完成後再進行展示。
目前小程序分包大小有以下限制:
整個小程序所有分包大小不超過 8M
單個分包/主包大小不能超過 2M
使用如下:
{ "pages":[ //主包 "pages/index", "pages/logs" ], "subPackages": [ //分包的集合 { "root": "pages/task/", //分包1:物理根目錄 "pages": [ "index/index", //pages/task/index/index "grade/grade" ] }, { //分包2 "root": "pages/read/", "pages": [ "index/index", "note/note", "comment/index" //導航全路徑:/pages/read/comment/index ] } ] }
打包原則
聲明 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 內的資源。
註意:
- 不管分包如何處理,跳轉路徑和之前一樣正常跳轉,一點都沒變;加載分包時會有彈窗提示。
- 如果分包的首頁在TAB中,則文件必須不能放在分包的目錄下;
- 盡管做了分包處理,項目的素材,公共文件等若放在最外層依然會被分在主包中。可將圖片等放在分包的目錄下。
參考文檔:https://developers.weixin.qq.com/miniprogram/dev/framework/subpackages.html
跳轉到同個公眾號下的另一個小程序
<navigator target="miniProgram" open-type="navigate"
app-id="xxxxxxxx" path="/pages/homework/index/index"
extra-data="" version="release">
打開綁定的小程序
</navigator>
當target="miniProgram"
時有效,要打開的小程序版本,有效值 develop(開發版)
,trial(體驗版)
,release(正式版)
,僅在當前小程序為開發版或體驗版時此參數有效;
如果當前小程序是正式版,則打開的小程序必定是正式版。
UI效果:如打開一個新的小程序一樣,有開始的加載效果;之後直接到指定頁面(未指定時默認到首頁),中間沒有別的反應。
點擊右上角的關閉按鈕,只關閉當前小程序(即跳轉到的),之後顯示原來的小程序。
微信小程序小結(4) -- 分包加載及小程序間跳轉