微信小程序插件的发布方便了代码公用和数据交互,可以保证业务功能公用的同时保证代码的安全性。
微信插件的定义如下:插件是对一组 js 接口、自定义组件或页面的封装,用于嵌入到小程序中使用。插件不能独立运行,必须嵌入在其他小程序中才能被用户使用;而第三方小程序在使用插件时,也无法看到插件的代码。因此,插件适合用来封装自己的功能或服务,提供给第三方小程序进行展示和使用。
所以我们开发插件时还需考虑它的特性和使用场景,插件的审核比小程序严格多了,一般审核周期也较长。
下面总结下插件相关的内容:
开发:官方文档https://developers.weixin.qq.com/miniprogram/dev/framework/plugin/development.html,文档里已经介绍的很详细了,这里不再细讲了;
传参:小程序向插件内组件传参,跟小程序组件传参基本一致;小程序向插件内页面传参:可以通过URL带参和向外暴露变量传参。
从url传参:
<navigator url=plugin-private://{appid}/pages/list/index?options={params}
></navigator>
在插件内页面通过query获取相应的值, 一般参数比较少可以通过url传参解决,如果相关配置较多,则可通过以下方式实现。
通过变量配置传参:
在插件index.js文件暴露变量名:
let config = {}
module.exports = { config }
在第小程序使用该插件页面js文件:
// 引入插件
const plugin = requirePlugin("plug");
Page({
onLoad(){
// 配置插件所需要的参数
plugin.config = {
name: '',title: '',
id: '',
url: '',
img: '',
....
}
}
})
那么在插件内监听数据:
在插件内的相关页面js文件种:
// 引入插件index.js 文件
const plugin = require('../../index')
Page({
onLoad () {
let config = plugin.config // 获取小程序传过来的参数
}
})
插件的安全性:
- 一般可以通过使用插件的小程序appid和插件的签名验证
- 在后台配置使用者的appid及插件的token
- 验证:如果从请求head中的refer字段中appid与后台appid库的不匹配,则直接拒绝其继续访问插件。如果匹配,则继续验证其签名准确性