小程序插件开发指南:开通流程、创建项目及注意事项

2024-07-09
来源:网络整理

微信小程序开发插件

开发插件前,请先阅读小程序插件接入指南,了解开通流程及开通范围,并开通插件功能,若未开通插件功能,将无法上传插件。

创建插件项目

可以直接在开发者工具中创建插件项目。

新建一个插件类型项目之后,如果创建示例项目,则项目会包含三个目录:

目录内容可以写成普通的小程序,用于插件的调试、预览、查看,后面的内容主要介绍中的插件代码和doc中的插件开发文档。

我们提供了完整的插件示例,可在微信开发者工具中直接查看,开发者可以将其与本文进行对比,更加容易理解。请注意:

由于插件需要起作用,所以请填写一份;由于目前代码片段的限制,打开示例后,请手动填写/app.json(如下图),以使示例正常运行。

插件目录结构

一个插件可以包含若干个自定义组件、页面、以及一组js接口,插件目录内容如下:

plugin ├── components │ ├── hello-component.js // 插件提供的自定义组件(可以有多个) │ ├── hello-component.json │ ├── hello-component.wxml │ └── hello-component.wxss ├── pages │ ├── hello-page.js // 插件提供的页面(可以有多个,自小程序基础库版本 2.1.0 开始支持) │ ├── hello-page.json │ ├── hello-page.wxml │ └── hello-page.wxss ├── index.js // 插件的 js 接口 └── plugin.json // 插件配置文件

插件配置文件

所有开放给第三方小程序的自定义组件、页面、js接口都必须在插件配置文件.json中列出,格式如下:

代码示例:

{ "publicComponents": { "hello-component": "components/hello-component" }, "pages": { "hello-page": "pages/hello-page" }, "main": "index.js" }

这个配置文件会开放一个自定义组件,一个页面以及所有导出到.js下给第三方小程序的js接口。

开发插件

请注意:插件开发中,只有部分接口可以直接调用,其他部分能力(如获取用户信息、发起支付等)需通过插件功能页来使用。

自定义组件

一个插件可以定义多个自定义组件,这些组件可以在插件中互相引用。但是,提供给第三方小程序的自定义组件必须在配置文件的 部分列出(见上文)。

除接口限制外,自定义组件的编写和组织方式与一般自定义组件相同,每个自定义组件由 wxml、wxss、js、json 四个文件组成,具体请参见自定义组件文档。

插件从小程序基础库 2.1.0 版本开始支持页面。一个插件可以定义多个插件页面,这些页面可以从插件的自定义组件、其他页面或第三方小程序重定向。所有页面都必须列在配置文件的 部分(见上文)。

插件页面除了接口限制外,编写和组织方式与一般页面相同,每个页面由wxml、wxss、js、json四个文件组成,具体请参见页面相关其他文档。

插件在进行页面重定向时,可以使用组件。插件重定向到自身页面时,url 应设置为这种格式: -:///PATH/TO/PAGE 。当需要重定向到其他插件时,也可以这样设置 url。

代码示例:

Go to pages/hello-page!

小程序跳转第三方app开发文档_小程序跳转第三方app开发文档_小程序跳转第三方app开发文档

从基础库2.2.2版本开始,在插件自身的页面中,插件也可以调用wx.跳转页面,URL格式和使用组件时类似。

界面

插件可以在接口文件(配置文件中指定,具体见上文)中提供一些js接口供插件使用者调用,比如:

代码示例:

module.exports = { hello: function() { console.log('Hello plugin!') } }

预览、上传和发布

插件可以像小程序一样预览和上传,但是插件没有试用版。

该插件会同时有多个上线版本,具体使用哪个版本号由使用该插件的小程序决定。

在手机上预览和审阅插件时,使用专门的小程序,应用项目中的文件夹内的小程序即可进行插件的预览。

插件开发文档

第三方小程序使用插件时,插件代码是不可见的,因此除了插件代码外,我们还支持插件开发者上传插件开发文档,此开发文档会展示在插件详情页,方便其他开发者在浏览和使用插件时阅读和参考。插件开发者应在插件开发文档中对插件提供的自定义组件、页面、接口等进行必要的描述和说明,以方便第三方小程序正确使用插件。

插件开发文档必须放在插件项目根目录下的doc目录中,目录结构如下:

doc ├── README.md // 插件文档,应为 markdown 格式 └── picture.jpg // 其他资源文件,仅支持图片

其中,.md的写法有一定的限制,具体来说:

引用的图片资源不能是在线图片,必须放在此目录下;文档中的链接只能链接到:

编辑完.md后,你可以使用开发者工具打开.md,在编辑器右下角预览插件文档并单独上传插件文档。上传的文档发布后,文档不会立即发布,此时你可以使用账号密码登录管理后台,在小程序插件 > 基础设置中预览并发布插件文档。

其他说明:插件间互相调用

插件之间不能直接引用其他插件,但如果小程序引用了多个插件,则插件之间可以互相调用。

插件调用另一个插件的方法,和插件调用自身方法类似,插件自定义组件和页面可以使用 -:// (:// 暂不支持),js接口可以使用 。

插件请求签名

当插件使用wx.API发送网络请求时,会携带一个额外的签名,用于验证该请求是否来自小程序插件,这个签名位于请求头中,长这样:

X-WECHAT-HOSTSIGN: {"noncestr":"NONCESTR", "timestamp":"TIMESTAMP", "signature":"SIGNATURE"}

其中, 为随机字符串, 为生成此随机字符串的UNIX时间戳, 为计算签名的参数,签名算法为:

SIGNATURE = sha1([APPID, NONCESTR, TIMESTAMP, TOKEN].sort().join(''))

其中, 是小程序(可以从请求头中获取); 是插件,可以在小程序插件基础设置里查看。

网络请求格式固定为{}/{}/page-.html,其中{}为小程序URL,{}为小程序版本号,版本号0表示开发版、试用版、审核版,版本号0表示开发者工具,其余为正式版。

插件开发者可以按照以下步骤在服务器上验证签名:

sort将字符串形式的四个值表示,并按照字典序排序(与数组排序方式相同);join是直接将四个排好序的字符串连接在一起;对连接结果进行sha1算法,结果为。

从基础库2.0.7版本开始,小程序运行过程中,若网络状况正常,会每隔10分钟发生一次变化,必要时可判断当前签名是否仍然有效。

分享