欧美日韩精品一区二区在线线,一级无码在线收看,精品国产高清91,久久精品欧美电影

# 獨(dú)立分包

微信客戶端 6.7.2,基礎(chǔ)庫 2.3.0 及以上版本開始支持。開發(fā)者工具請使用 1.02.1808300 及以上版本,可 點(diǎn)此下載。

獨(dú)立分包是小程序中一種特殊類型的分包,可以獨(dú)立于主包和其他分包運(yùn)行。從獨(dú)立分包中頁面進(jìn)入小程序時,不需要下載主包。當(dāng)用戶進(jìn)入普通分包或主包內(nèi)頁面時,主包才會被下載。

開發(fā)者可以按需將某些具有一定功能獨(dú)立性的頁面配置到獨(dú)立分包中。當(dāng)小程序從普通的分包頁面啟動時,需要首先下載主包;而獨(dú)立分包不依賴主包即可運(yùn)行,可以很大程度上提升分包頁面的啟動速度。

一個小程序中可以有多個獨(dú)立分包。

小游戲在基礎(chǔ)庫 v2.12.2 開始支持獨(dú)立分包,詳見 小游戲獨(dú)立分包指南。

# 配置方法

假設(shè)小程序目錄結(jié)構(gòu)如下:

├── app.js
├── app.json
├── app.wxss
├── moduleA
│   └── pages
│       ├── rabbit
│       └── squirrel
├── moduleB
│   └── pages
│       ├── pear
│       └── pineapple
├── pages
│   ├── index
│   └── logs
└── utils

開發(fā)者通過在app.jsonsubpackages字段中對應(yīng)的分包配置項中定義independent字段聲明對應(yīng)分包為獨(dú)立分包。

{
  "pages": [
    "pages/index",
    "pages/logs"
  ],
  "subpackages": [
    {
      "root": "moduleA",
      "pages": [
        "pages/rabbit",
        "pages/squirrel"
      ]
    }, {
      "root": "moduleB",
      "pages": [
        "pages/pear",
        "pages/pineapple"
      ],
      "independent": true
    }
  ]
}

# 限制

獨(dú)立分包屬于分包的一種。普通分包的所有限制都對獨(dú)立分包有效。獨(dú)立分包中插件、自定義組件的處理方式同普通分包。

此外,使用獨(dú)立分包時要注意:

  • 獨(dú)立分包中不能依賴主包和其他分包中的內(nèi)容,包括 js 文件、template、wxss、自定義組件、插件等(使用 分包異步化 時 js 文件、自定義組件、插件不受此條限制)
  • 主包中的 app.wxss 對獨(dú)立分包無效,應(yīng)避免在獨(dú)立分包頁面中使用 app.wxss 中的樣式;
  • App 只能在主包內(nèi)定義,獨(dú)立分包中不能定義 App,會造成無法預(yù)期的行為;
  • 獨(dú)立分包中暫時不支持使用插件。

# 注意事項

# (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 對象實(shí)現(xiàn)獨(dú)立分包和小程序其他部分的全局變量共享。

為了在獨(dú)立分包中滿足這一需求,基礎(chǔ)庫 2.2.4 版本開始 getApp 支持 [allowDefault] 參數(shù),在 App 未定義時返回一個默認(rèn)實(shí)現(xiàn)。當(dāng)主包加載,App 被注冊時,默認(rèn)實(shí)現(xiàn)中定義的屬性會被覆蓋合并到真正的 App 中。

示例代碼:

  • 獨(dú)立分包中
const app = getApp({allowDefault: true}) // {}
app.data = 456
app.global = {}
  • app.js 中
App({
  data: 123,
  other: 'hello'
})

console.log(getApp()) // {global: {}, data: 456, other: 'hello'}

# (2)關(guān)于 App 生命周期

當(dāng)從獨(dú)立分包啟動小程序時,主包中 ApponLaunch 和首次 onShow 會在從獨(dú)立分包頁面首次進(jìn)入主包或其他普通分包頁面時調(diào)用。

由于獨(dú)立分包中無法定義 App,小程序生命周期的監(jiān)聽可以使用 wx.onAppShow,wx.onAppHide 完成。App 上的其他事件可以使用 wx.onError,wx.onPageNotFound 監(jiān)聽。

# 低版本兼容

在低于 6.7.2 版本的微信中運(yùn)行時,獨(dú)立分包視為普通分包處理,不具備獨(dú)立運(yùn)行的特性。

注意:在兼容模式下,主包中的 app.wxss 可能會對獨(dú)立分包中的頁面產(chǎn)生影響,因此應(yīng)避免在獨(dú)立分包頁面中使用 app.wxss 中的樣式。