开发者社区
社区提问意见反馈
开发者钉组织
扫描二维码
加入支付宝开发者钉组织
开始使用
ampe
多端开发
鸿蒙
插件
插件获取与使用
插件开发
插件发布
插件管理
插件技术知识汇总
附录
安全
openid 开发指南
扩展能力
开发 > 指南 > 插件 > 插件获取与使用 > 插件使用
贡献者 6
收藏
订阅更新
我的文档
设置
简介
插件使用有静态声明和动态加载两种方式,推荐使用静态声明的懒加载方式。
使用限制
使用插件前请完成 插件获取
支付宝 10.1.85 及以上版本支持已使用分包的主体小程序应用插件。
静态加载仅支持一个小程序最多关联 10 个插件,动态加载无限制。
本地开发接入插件时,如果需要更新插件版本,需要到开放平控制台进行操作才会生效,详情可查看 插件版本升级
小程序插件只支持在小程序中使用,不支持在小程序插件中使用小程序插件。
静态声明
使用插件前,使用者需要在 app.json 中声明需要使用的插件。开发者可选择使用普通静态声明,或者使用推荐的基于 静态声明 优化的 静态懒加载 方式。
普通静态声明
plugins: 可以声明多个插件,每个插件声明以使用者自定义的插件引用名作为唯一标识。
插件引用名(例如示例中的 myplugin)由插件使用者自定义,无需和插件开发者的命名保持一致。在后续的插件使用中,该引用名将被用于表示该插件。
version: 指定插件版本号。* 自动选择最新版本,版本以 小程序详情页 > 开发 > 插件服务 > 插件管理 为准。
provider: 指定所引用的插件 id(插件 id 可咨询插件提供方)。同一个插件 id 不能多次声明使用。
json
复制代码
{
"plugins": {
"myplugin": {
"version": "*", // 自动选择最新版本
"provider": "2019235609092837"
},
//如需声明多个插件,重复添加自定义字段即可
"yourplugin": {
"version": "*", // 自动选择最新版本
"provider": "2019235609090000"
}
}
}
使用插件
版本兼容
使用插件的小程序项目需要 0.60 或以上版本的 ide 才能编译构建。
插件的运行要求小程序基础库1.22.4 及以上版本,支付宝客户端 10.1.85 及以上的版本,小程序在使用插件的时候,需要按照如下方式兼容:
注意: 兼容代码一定要放到 app.js 文件的开头处,不能放到生命周期方法中,如果不做上述兼容处理,在基础库版本低于 1.18.0 的时候可能会导致页面白屏。
组件
可使用 基础组件扩展组件自定义组件,插件的自定义组件和普通的自定义组件使用方法类似。在 json 文件中定义需要引用的插件自定义组件时,通过 plugin:// 协议指明需要引用的插件自定义组件。
出于对插件的保护,默认情况下 ref 接口无法获得插件的自定义组件实例对象,可以通过给插件自定义组件定义 ref 定义段的方式 指定被 ref 引用时的返回值 来实现。
页面
跳转到插件页面时, url 使用 plugin:// 前缀,格式为 plugin://plugin_name/plugin_page,如下所示:
也可以使用 api 进行跳转:
js 接口
使用插件的 js 接口时,可以使用 requireplugin 方法。
该示例先通过 requireplugin 引用插件 api,然后访问插件暴露的 xxx_api 函数以及 world 变量。
懒加载模式
静态懒加载方式可提高小程序的首屏性能和接入开发体验。开启静态懒加载的方式只需要在现有静态声明基础上,新增 lazy 标识即可。同时提供 预加载 功能,可以通过配置 preloadrule 灵活控制页面进行插件包预加载,即提前下载后续页面所需的插件包,提升后续页面打开性能。
lazyplugin:插件引用名,无需和插件开发者的命名保持一致。在后续的插件使用中,该引用名将被用于表示该插件。
lazy:声明插件运行模式,默认为非懒加载(false)。
preloadrule:开发者可以通过配置 preloadrule,在进入小程序某个页面时,由框架自动下载可能需要的插件,以提升实际使用插件时的性能。
使用插件
版本兼容
使用懒加载模式的小程序项目支持 ide 3.0.0 及以上版本编译构建。懒加载模式插件的运行小程序支持基础库 2.7.18 及以上版本,如不符合建议请
组件
懒加载模式会在实际渲染到插件组件时,自动去触发插件加载,所以在未下载或注入之前,插件组件处于不可用的状态,通过为插件的自定义组件设置 占位组件,可以先渲染占位组件作为替代,在插件下载完成后再进行替换。
页面
跳转到插件页面时, url 使用 plugin:// 前缀,格式为 plugin://plugin_name/plugin_page,如下所示:
也可以使用 api 进行跳转:
js 接口
引用懒加载模式的插件提供的 js 接口时,为了不让下载插件的操作阻塞代码运行,需要异步获取 js 导出的内容
导出到插件
从基础库 2.7.7 起,宿主小程序可以导出一些内容,供插件获取。具体来说,即在声明使用插件时,可以通过 export 字段来指定一个文件,如:
则该文件导出的内容可以被插件用全局函数 requireminiprogram 获得。例如,在以上示例文件中,宿主小程序做了以下导出:
那么插件就可以获得上面导出的内容:
具体导出内容,可以阅读 插件开发 文档,和插件的开发者做好约定。
注意:
使用的多个插件的导出互不影响,两个插件可以导出同一个文件,也可以是不同的文件。但导出同一个文件时,如果一个插件对导出内容做了修改,那么另一个插件也会被影响。
请谨慎导出 my 对象或某个具体的 api,这将使插件可以以宿主小程序的身份调用 api。
导出到插件功能仅在静态声明插件的情况下使用,无法在动态加载插件的情况下使用。
为插件提供自定义组件
有时,插件可能会在页面或者自定义组件中,将一部分区域交给使用的宿主小程序来渲染,因此需要使用的宿主小程序提供一个自定义组件。但由于插件中不能直接指定宿主小程序的自定义组件路径,因此需要通过为插件指定 抽象节点 的方式来提供。 如果是插件的自定义组件需要指定抽象节点实现,可以在引用时指定:
从基础库 2.8.9ide 3.7.1 起,可以通过 app.json 的配置项为插件页面指定抽象组件实现。例如,要给插件名为 plugin-index 的页面中的抽象节点 mp-view 指定宿主小程序的自定义组件 /components/comp-from-miniprogram 作为实现的话:
另外也可以参考 插件开发的相关文档
动态加载
除了静态声明的方式,支付宝还提供了动态加载插件的方式,不用在 app.json 中提前声明插件依赖,而是使用 my.loadplugin 动态加载插件,这样小程序不用在启动阶段就下载插件包,而是等到实际使用时,再下载插件包。
基于静态声明的懒加载模式 可以做到同样的效果,并且使用更加直观简单,更推荐使用!
动态加载插件使用声明
使用动态加载插件前,需要在 app.json 中做以下声明
注意: 只有添加以上声明,才可以使用动态加载插件的方式。 此时 js 代码 my.caniuse('plugin.dynamic') 会返回 true。
使用插件
版本兼容
使用动态加载插件的小程序项目需要 1.0 或以上版本的 ide 才能编译构建。
插件的运行要求小程序基础库为 1.21.0 及以上版本,小程序在动态加载插件的时候,需要按照以下方式兼容:
使用 my.loadplugin 动态加载插件
在使用插件的组件、页面或 api 之前,需要使用 my.loadplugin 动态加载插件。
自定义组件
动态渲染自定义组件,需要使用 component 组件。
属性
属性名
类型
描述
is
string
要渲染的插件组件。需要使用 dynamic-plugin: 前缀
注意:
需要使用 dynamic-plugin: 指定要渲染的插件组件,格式为 dynamic-plugin:/plugin_id/plugin_component。plugin_component 为插件 plugin.json 中对外暴露的组件。
必须使用 a:if 控制 component 组件是否可以渲染,否则可能导致白屏。
可以像使用自定义组件一样使用 component 组件,component 组件会将其 props 都传递给所要渲染的插件组件。
默认情况下 ref 接口无法获得插件的自定义组件实例对象,可以通过给插件自定义组件定义 ref 定义段的方式 指定被 ref 引用时的返回值
示例代码
页面
跳转到插件页面,需要使用 dynamic-plugin: 前缀。格式为 dynamic-plugin:/plugin_id/plugin_page,其中 plugin_page 为插件 plugin.json 中暴露的页面。
也可以使用 api 进行跳转
注意: 跳转页面前需要确保插件已加载。
js 接口
使用插件的 js 接口时,可以使用 requireplugin 方法,但需要使用 dynamic-plugin: 前缀。格式为: dynamic-plugin://plugin_id,如下所示:
导出到插件
动态插件不支持此功能,建议使用基于静态声明的懒加载模式
内容没有解决您的问题?您还可以前往 或 寻求帮助
凯发k8官方网娱乐官方 copyright © 2022 支付宝(杭州)信息技术有限公司  | icp证浙b2-20160559
该文档对你是否有帮助?
当前页面目录
网站地图