开发者工具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 接口时,可以使用 requirePlugin
方法。例如,插件提供一个名为 hello
的方法和一个名为 world
的变量,则可以像下面这样调用:
const myPluginInterface = requirePlugin('myPlugin')
myPluginInterface.hello()
const myWorld = myPluginInterface.world
← 开发插件 插件调用 API 的限制 →