QQ小程序 使用插件
添加插件
開發者工具0.1.29版本開始支持插件功能。
引入插件代碼包
使用插件前,使用者要在 app.json 中聲明需要使用的插件,例如:
代碼示例:
{
"plugins": {
"myPlugin": {
"version": "1.0.0",
"provider": "qqidxxxxxxxxxxxxxxxx"
}
}
}
如上例所示, plugins 定義段中可以包含多個插件聲明,每個插件聲明以一個使用者自定義的插件引用名作為標識,并指明插件的 appid 和需要使用的版本號。其中,引用名(如上例中的 myPlugin)由使用者自定義,無需和插件開發者保持一致或與開發者協調。在后續的插件使用中,該引用名將被用于表示該插件。
在分包內引入插件代碼包
如果插件只在一個分包內用到,可以將插件僅放在這個分包內,例如:
{
"subpackages": [
{
"root": "packageA",
"pages": ["pages/cat", "pages/dog"],
"plugins": {
"myPlugin": {
"version": "1.0.0",
"provider": "qqidxxxxxxxxxxxxxxxx"
}
}
}
]
}
在分包內使用插件有如下限制:
- 僅能在這個分包內使用該插件;
- 同一個插件不能被多個分包同時引用;
- 目前,還不能從分包外的頁面直接跳入分包內的插件頁面,需要先跳入分包內的非插件頁面、再跳入同一分包內的插件頁面。
使用插件
使用插件時,插件的代碼對于使用者來說是不可見的。為了正確使用插件,使用者應查看插件詳情頁面中的“開發文檔”一節,閱讀由插件開發者提供的插件開發文檔,通過文檔來明確插件提供的自定義組件、頁面名稱及提供的 js 接口規范等。
自定義組件
使用插件提供的自定義組件,和使用普通自定義組件的方式相仿。在 json
文件定義需要引入的自定義組件時,使用 plugin:// 協議指明插件的引用名和自定義組件名,例如:
代碼示例:
{
"usingComponents": {
"hello-component": "plugin://myPlugin/hello-component"
}
}
出于對插件的保護,插件提供的自定義組件在使用上有一定的限制:
- 默認情況下,頁面中的 this.selectComponent 接口無法獲得插件的自定義組件實例對象;
- qq.createSelectorQuery 等接口的 >>> 選擇器無法選入插件內部。
頁面
需要跳轉到插件頁面時,url 使用plugin://
前綴,形如 plugin://PLUGIN_NAME//PLUGIN_PAGE
, 如:
代碼示例:
<navigator url="plugin://myPlugin/hello-page">
Go to pages/hello-page!
</navigator>
js 接口 使用插件的 js 接口時,可以使用 requirePlugin 方法。例如,插件提供一個名為 hello 的方法和一個名為 world 的變量,則可以像下面這樣調用:
const myPluginInterface = requirePlugin('myPlugin')
myPluginInterface.hello()
const myWorld = myPluginInterface.world