微信小程序 使用插件

2022-04-25 13:39 更新

使用插件

添加插件

在使用插件前,首先要在小程序管理后臺(tái)的“設(shè)置-第三方服務(wù)-插件管理”中添加插件。開發(fā)者可登錄小程序管理后臺(tái),通過 appid 查找插件并添加。如果插件無需申請,添加后可直接使用;否則需要申請并等待插件開發(fā)者通過后,方可在小程序中使用相應(yīng)的插件。

引入插件代碼包

使用插件前,使用者要在 app.json 中聲明需要使用的插件,例如:

代碼示例:

{
  "plugins": {
    "myPlugin": {
      "version": "1.0.0",
      "provider": "wxidxxxxxxxxxxxxxxxx"
    }
  }
}

如上例所示, plugins 定義段中可以包含多個(gè)插件聲明,每個(gè)插件聲明以一個(gè)使用者自定義的插件引用名作為標(biāo)識,并指明插件的 appid 和需要使用的版本號。其中,引用名(如上例中的 myPlugin)由使用者自定義,無需和插件開發(fā)者保持一致或與開發(fā)者協(xié)調(diào)。在后續(xù)的插件使用中,該引用名將被用于表示該插件。

在分包內(nèi)引入插件代碼包

如果插件只在一個(gè)分包內(nèi)用到,可以將插件僅放在這個(gè)分包內(nèi),例如:

{
  "subpackages": [
    {
      "root": "packageA",
      "pages": [
        "pages/cat",
        "pages/dog"
      ],
      "plugins": {
        "myPlugin": {
          "version": "1.0.0",
          "provider": "wxidxxxxxxxxxxxxxxxx"
        }
      }
    }
  ]
}

在分包內(nèi)使用插件有如下限制:

  • 僅能在這個(gè)分包內(nèi)使用該插件;
  • 同一個(gè)插件不能被多個(gè)分包同時(shí)引用;
  • 如果基礎(chǔ)庫版本低于 2.9.0 ,不能從分包外的頁面直接跳入分包內(nèi)的插件頁面,需要先跳入分包內(nèi)的非插件頁面、再跳入同一分包內(nèi)的插件頁面。

使用插件

使用插件時(shí),插件的代碼對于使用者來說是不可見的。為了正確使用插件,使用者應(yīng)查看插件詳情頁面中的“開發(fā)文檔”一節(jié),閱讀由插件開發(fā)者提供的插件開發(fā)文檔,通過文檔來明確插件提供的自定義組件、頁面名稱及提供的 js 接口規(guī)范等。

自定義組件

使用插件提供的自定義組件,和使用普通自定義組件的方式相仿。在 json 文件定義需要引入的自定義組件時(shí),使用 plugin:// 協(xié)議指明插件的引用名和自定義組件名,例如:

代碼示例:

{
  "usingComponents": {
    "hello-component": "plugin://myPlugin/hello-component"
  }
}

出于對插件的保護(hù),插件提供的自定義組件在使用上有一定的限制:

  • 默認(rèn)情況下,頁面中的 this.selectComponent 接口無法獲得插件的自定義組件實(shí)例對象;
  • wx.createSelectorQuery 等接口的 >>> 選擇器無法選入插件內(nèi)部。

頁面

插件的頁面從小程序基礎(chǔ)庫版本 2.1.0 開始支持。

需要跳轉(zhuǎn)到插件頁面時(shí),url 使用 plugin:// 前綴,形如 plugin://PLUGIN_NAME/PLUGIN_PAGE, 如:

代碼示例:

<navigator url="plugin://myPlugin/hello-page">
  Go to pages/hello-page!
</navigator>

js 接口

使用插件的 js 接口時(shí),可以使用 requirePlugin 方法。例如,插件提供一個(gè)名為 hello 的方法和一個(gè)名為 world 的變量,則可以像下面這樣調(diào)用:

var myPluginInterface = requirePlugin('myPlugin');

myPluginInterface.hello();
var myWorld = myPluginInterface.world;

導(dǎo)出到插件

從基礎(chǔ)庫 2.11.1 起,使用插件的小程序可以導(dǎo)出一些內(nèi)容,供插件獲取。具體來說,在聲明使用插件時(shí),可以通過 export 字段來指定一個(gè)文件,如:

{
  "myPlugin": {
    "version": "1.0.0",
    "provider": "wxidxxxxxxxxxxxxxxxx",
    "export": "index.js"
  }
}

則該文件(上面的例子里是 index.js)導(dǎo)出的內(nèi)容可以被這個(gè)插件用全局函數(shù)獲得。例如,在上面的文件中,使用插件的小程序做了如下導(dǎo)出:

// index.js
module.exports = { whoami: 'Wechat MiniProgram' }

那么插件就可以獲得上面導(dǎo)出的內(nèi)容:

// plugin
requireMiniProgram().whoami // 'Wechat MiniProgram'

具體導(dǎo)出什么內(nèi)容,可以閱讀插件開發(fā)文檔,和插件的開發(fā)者做好約定。

當(dāng)插件在分包中時(shí),這個(gè)特性也可以使用,但指定的文件的路徑是相對于分包的。例如在 root: packageA 的分包中指定了 export: exports/plugin.js,那么被指定的文件在文件系統(tǒng)上應(yīng)該是 /packageA/exports/plugin.js。

使用的多個(gè)插件的導(dǎo)出互不影響,兩個(gè)插件可以導(dǎo)出同一個(gè)文件,也可以是不同的文件。但導(dǎo)出同一個(gè)文件時(shí),如果一個(gè)插件對導(dǎo)出內(nèi)容做了修改,那么另一個(gè)插件也會(huì)被影響,請注意這一點(diǎn)。

請謹(jǐn)慎導(dǎo)出 wx 對象或某個(gè)具體的 wx API,這將使插件可以以使用者小程序的身份調(diào)用 API。


以上內(nèi)容是否對您有幫助:
在線筆記
App下載
App下載

掃描二維碼

下載編程獅App

公眾號
微信公眾號

編程獅公眾號