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

# 分包異步化

在小程序中,不同的分包對應(yīng)不同的下載單元;因此,除了非獨(dú)立分包可以依賴主包外,分包之間不能互相使用自定義組件或進(jìn)行 require?!阜职惒交固匦詫⒃试S通過一些配置和新的接口,使部分跨分包的內(nèi)容可以等待下載后異步使用,從而一定程度上解決這個(gè)限制。

在開發(fā)者工具中預(yù)覽效果

# 兼容性

該特性需要基礎(chǔ)庫版本 2.11.2 或以上,使用該特性的小程序在 2.11.2 以下的基礎(chǔ)庫上可能無法工作,如果發(fā)布正式版本,可以考慮將最低基礎(chǔ)庫版本設(shè)置為 2.11.2 或以上。

點(diǎn)擊展開各平臺最低支持版本:
  • 安卓微信:7.0.13
  • iOS 微信:7.0.12
  • 微信開發(fā)者工具:1.05.2104272
  • PC 微信:3.4.5
  • macOS 微信:3.4.1
  • 安卓企業(yè)微信:3.1.23
  • iOS 企業(yè)微信:4.0.8

# 跨分包自定義組件引用

一個(gè)分包使用其他分包的自定義組件時(shí),由于其他分包還未下載或注入,其他分包的組件處于不可用的狀態(tài)。通過為其他分包的自定義組件設(shè)置 占位組件,我們可以先渲染占位組件作為替代,在分包下載完成后再進(jìn)行替換。例如:

// subPackageA/pages/index.json
{
  "usingComponents": {
    "button": "../../commonPackage/components/button",
    "list": "../../subPackageB/components/full-list",
    "simple-list": "../components/simple-list",
    "plugin-comp": "plugin://pluginInSubPackageB/comp"
  },
  "componentPlaceholder": {
    "button": "view",
    "list": "simple-list",
    "plugin-comp": "view"
  }
}

在這個(gè)配置中,buttonlist 兩個(gè)自定義組件是跨分包引用組件,其中 button 在渲染時(shí)會(huì)使用內(nèi)置組件 view 作為替代,list 會(huì)使用當(dāng)前分包內(nèi)的自定義組件 simple-list 作為替代進(jìn)行渲染;在這兩個(gè)分包下載完成后,占位組件就會(huì)被替換為對應(yīng)的跨分包組件。

在基礎(chǔ)庫 2.24.3 之后,可以使用 wx.onLazyLoadError 監(jiān)聽加載事件。

# 跨分包 JS 代碼引用

一個(gè)分包中的代碼引用其它分包的代碼時(shí),為了不讓下載阻塞代碼運(yùn)行,我們需要異步獲取引用的結(jié)果。如:

// subPackageA/index.js
// 使用回調(diào)函數(shù)風(fēng)格的調(diào)用
require('../subPackageB/utils.js', utils => {
  console.log(utils.whoami) // Wechat MiniProgram
}, ({mod, errMsg}) => {
  console.error(`path: ${mod}, ${errMsg}`)
})
// 或者使用 Promise 風(fēng)格的調(diào)用
require.async('../commonPackage/index.js').then(pkg => {
  pkg.getPackageName() // 'common'
}).catch(({mod, errMsg}) => {
  console.error(`path: ${mod}, ${errMsg}`)
})

在其它分包中的插件也可以通過類似的方法調(diào)用:

// 使用回調(diào)函數(shù)風(fēng)格的調(diào)用
requirePlugin('live-player-plugin', livePlayer => {
  console.log(livePlayer.getPluginVersion())
}, ({mod, errMsg}) => {
  console.error(`path: ${mod}, ${errMsg}`)
})
// 或者使用 Promise 風(fēng)格的調(diào)用
requirePlugin.async('live-player-plugin').then(livePlayer => {
  console.log(livePlayer.getPluginVersion())
}).catch(({mod, errMsg}) => {
  console.error(`path: ${mod}, ${errMsg}`)
})

詳情可參考 require 文檔