新聞中心
- 獨(dú)立分包
- 配置方法
- 配置方法
獨(dú)立分包
基礎(chǔ)庫 3.60.2 及以上版本開始支持。開發(fā)者工具請使用 2.2.9 及以上版本,可點(diǎn)此下載
創(chuàng)新互聯(lián)是一家集網(wǎng)站建設(shè),平武企業(yè)網(wǎng)站建設(shè),平武品牌網(wǎng)站建設(shè),網(wǎng)站定制,平武網(wǎng)站建設(shè)報價,網(wǎng)絡(luò)營銷,網(wǎng)絡(luò)優(yōu)化,平武網(wǎng)站推廣為一體的創(chuàng)新建站企業(yè),幫助傳統(tǒng)企業(yè)提升企業(yè)形象加強(qiáng)企業(yè)競爭力。可充分滿足這一群體相比中小企業(yè)更為豐富、高端、多元的互聯(lián)網(wǎng)需求。同時我們時刻保持專業(yè)、時尚、前沿,時刻以成就客戶成長自我,堅持不斷學(xué)習(xí)、思考、沉淀、凈化自己,讓我們?yōu)楦嗟钠髽I(yè)打造出實用型網(wǎng)站。
-
獨(dú)立分包是小程序中一種特殊類型的分包,可以獨(dú)立于主包和其他分包運(yùn)行。從獨(dú)立分包中頁面進(jìn)入小程序時,不需要下載主包。當(dāng)用戶進(jìn)入普通分包或主包內(nèi)頁面時,主包才會被下載。
-
開發(fā)者可以按需將某些具有一定功能獨(dú)立性的頁面配置到獨(dú)立分包中。當(dāng)小程序從普通的分包頁面啟動時,需要首先下載主包;而獨(dú)立分包不依賴主包即可運(yùn)行,可以很大程度上提升分包頁面的啟動速度。
-
一個小程序中可以有多個獨(dú)立分包。
TIPS:
- 小游戲不支持獨(dú)立分包。
- 目前暫不支持在獨(dú)立分包中使用動態(tài)庫。
配置方法
假設(shè)小程序目錄結(jié)構(gòu)如下:
├── app.js├── app.json├── app.css├── moduleA│ └── pages│ ├── history│ └── search├── moduleB│ └── pages│ ├── counter│ └── goods├── pages│ ├── index│ └── logs└── utils
開發(fā)者通過在app.json的subPackages字段中對應(yīng)的分包配置項中定義independent字段聲明對應(yīng)分包為獨(dú)立分包。
{"pages": ["pages/index","pages/logs"],"subPackages": [{"root": "moduleA","pages": ["pages/history","pages/search"]},{"root": "moduleB","pages": ["pages/counter","pages/goods"],"independent": true}]}
限制
獨(dú)立分包屬于分包的一種。普通分包的所有限制都對獨(dú)立分包有效。獨(dú)立分包中自定義組件的處理方式同普通分包。
此外,使用獨(dú)立分包時要注意:
- 獨(dú)立分包中不能依賴主包和其他分包中的內(nèi)容,包括 js 文件、template、css、自定義組件等。主包中的
app.css對獨(dú)立分包無效,應(yīng)避免在獨(dú)立分包頁面中使用app.css中的樣式; - App 只能在主包內(nèi)定義,獨(dú)立分包中不能定義 App,會造成無法預(yù)期的行為。
注意事項
(1)關(guān)于 getApp
與普通分包不同,獨(dú)立分包運(yùn)行時,App并不一定被注冊,因此getApp也不一定可以獲得App對象:
- 當(dāng)用戶從獨(dú)立分包頁面啟動小程序時,主包是不存在的,那么
App也不存在,此時調(diào)用getApp獲取到的是undefined。 當(dāng)用戶進(jìn)入普通分包或主包內(nèi)頁面時,主包才會被下載,App才會被注冊; - 當(dāng)用戶是從普通分包或主包內(nèi)頁面跳轉(zhuǎn)到獨(dú)立分包頁面時,主包已經(jīng)存在,此時調(diào)用
getApp可以獲取到真正的 App 實例。
由于這一限制,開發(fā)者無法通過App方法實現(xiàn)獨(dú)立分包和小程序其它部分的全局變量共享。
為了在獨(dú)立分包中滿足這一需求,基礎(chǔ)庫3.60.2版本開始getApp支持[allowDefault]參數(shù),在App未定義時返回一個默認(rèn)實現(xiàn)。當(dāng)主包加載,App被注冊時,默認(rèn)實現(xiàn)中定義的屬性會被覆蓋合并到真正的App中。
代碼示例
- 獨(dú)立分包中
// {}const app = getApp({allowDefault: true});app.data = 456;app.global = {};
- app.js 中
App({data: 123,from: 'swan'});// {global: {}, data: 456, from: 'swan'}console.log(getApp());
(2)關(guān)于 App 生命周期
當(dāng)從獨(dú)立分包啟動小程序時,主包中 App 的onLaunch和首次onShow會在從獨(dú)立分包頁面首次進(jìn)入主包或其他普通分包頁面時調(diào)用;
由于獨(dú)立分包中無法定義 App,小程序生命周期的監(jiān)聽可以使用swan.onAppShow,swan.onAppHide完成。App 上的其它事件可以使用swan.onError,swan.onPageNotFound監(jiān)聽。
低版本兼容:
- 在低于
3.60.2的基礎(chǔ)庫版本運(yùn)行時,獨(dú)立分包視為普通分包處理,不具備獨(dú)立運(yùn)行的特性; - 在兼容模式下,主包中的 app.css 可能會對獨(dú)立分包中的頁面產(chǎn)生影響,因此應(yīng)避免在獨(dú)立分包頁面中使用 app.css 中的樣式。
當(dāng)前題目:創(chuàng)新互聯(lián)百度小程序教程:獨(dú)立分包
URL鏈接:http://m.fisionsoft.com.cn/article/djjspde.html


咨詢
建站咨詢

