小程序插件功能 第1篇
插件支持商业订购和结算,质量优秀和普适性较高的小程序插件可以借助各大平台的小程序插件市场对开发的插件进行封装售卖,便于开发者进行服务变现和商业化。
插件本身的技术原理并不复杂。插件的木质是在不修改程序主体的情况下对软件功能进行加强,当插件的接口被公开时任何人都可以自己制作插件来解决一些操作上的不便或增加一些功能。
一个插件框架包括两个部分:主程序(host)和插件((plug-in)。主程序即是“包含”插件的程序,插件必须实现若干标准接口,由主程序在与插件通信时调用。
小程序插件代码由一些自定义组件和 JS 代码文件构成,插件开发者在发布插件时,这些代码被上传到后台保存起来。当小程序使用插件时,使用者需填写插件的 AppID 和版本号,就可从后台获取相应的插件代码。小程序代码编译时,插件代码会被嵌入到小程序中,与小程序一起编译运行。
目前开发者完成小程序插件的开发后,可以将自己的插件上架到微信小程序插件市场、支付宝小程序插件市场、FinClip 小程序应用市场等。前两者不言而喻是最大的小程序生态市场,变现的能力较为强劲,而 FinClip 则主要是面向 B 端用户群的小程序容器技术,利用其技术一些企业可以在自有 App 运行小程序,或者将自有小程序转化为 App ,这两类场景也都有集成小程序插件的场景,也同样具有一定的潜力。
小程序插件功能 第2篇
通常情况下,可以将 miniprogram
下的代码当做使用插件的小程序代码,来进行插件的调试和测试。
但有时,需要将插件的代码放在实际运行的小程序中进行调试、测试。此时,可以使用开发版的小程序直接引用开发版插件。方法如下:
如果开发版小程序引用了开发版插件,此时这个小程序就不能上传发布了。必须要将插件版本设为正式版本之后,小程序才可以正常上传、发布。
注意事项:
小程序插件功能 第3篇
请注意:在插件开发中,只有 部分接口 可以直接调用;另外还有部分能力(如 获取用户信息 和 发起支付 等)可以通过 插件功能页 的方式使用。
插件可以定义若干个自定义组件,这些自定义组件都可以在插件内相互引用。但提供给使用者小程序使用的自定义组件必须在配置文件的 publicComponents
段中列出(参考上文)。
除去接口限制以外,自定义组件的编写和组织方式与一般的自定义组件相同,每个自定义组件由 wxml
, wxss
, js
和 json
四个文件组成。具体可以参考 自定义组件的文档。
插件从小程序基础库版本 开始支持页面。插件可以定义若干个插件页面,可以从本插件的自定义组件、其他页面中跳转,或从使用者小程序中跳转。所有页面必须在配置文件的 pages
段中列出(参考上文)。
除去接口限制以外,插件的页面编写和组织方式与一般的页面相同,每个页面由 wxml
, wxss
, js
和 json
四个文件组成。具体可以参考其他关于页面的文档。
插件执行页面跳转的时候,可以使用 navigator
组件。当插件跳转到自身页面时, url
应设置为这样的形式:plugin-private://PLUGIN_APPID/PATH/TO/PAGE
。需要跳转到其他插件时,也可以这样设置 url
。
代码示例:
自基础库版本 开始,在插件自身的页面中,插件还可以调用 来进行页面跳转, url
格式与使用 navigator
组件时相仿。
插件可以在接口文件(在配置文件中指定,详情见上文)中 export 一些 js 接口,供插件的使用者调用,如:
代码示例:
在开发者工具中预览效果,需要手动填写一下 miniprogram/
中的插件 AppID
从基础库 起,在插件中有全局函数 requireMiniProgram
,可以获取由使用者小程序导出的内容。
例如,使用者小程序做了如下导出:
那么在插件中,可以这样获得内容:
在开发者工具中预览效果,需要手动填写一下 miniprogram/
中的插件 AppID
有时,插件可能需要在页面或者自定义组件中,将一部分区域交给使用的小程序来渲染,因此需要能够引用小程序的自定义组件。但由于插件中不能直接指定小程序的自定义组件路径,因此无法直接通过 usingComponents
的方式来引用。这里介绍通过 抽象节点(generics) 来实现引用的方式。
如果是插件自定义组件(例如 plugin-view
),那么我们可以通过声明一个 generic:
并在希望显示小程序组件的位置引用:
在小程序中引用 plugin-view
时,就可以传递组件给插件进行渲染了:
如果是插件页,插件页本身就是一个页面顶层组件,小程序不会引用它,无法通过 generic:xxx=__
的方式来指定抽象节点实现;因此,从基础库 起,小程序可以在插件的配置里为插件页指定抽象节点实现。例如插件页面名为 plugin-index
,则可以:
小程序插件功能 第4篇
插件不能直接引用其他插件。但如果小程序引用了多个插件,插件之间是可以互相调用的。
一个插件调用另一个插件的方法,与插件调用自身的方法类似。可以使用 plugin-private://APPID
访问插件的自定义组件、页面(暂不能使用 plugin://
)。
对于 js 接口,可使用 requirePlugin
,但目前尚不能在文件一开头就使用 requirePlugin ,因为被依赖的插件可能还没有初始化,请考虑在更晚的时机调用 requirePlugin
,如接口被实际调用时、组件 attached 时。(未来会修复这个问题。)
插件在使用 等 API 发送网络请求时,将会额外携带一个签名 HostSign
,用于验证请求来源于小程序插件。这个签名位于请求头中,形如:
其中, NONCESTR
是一个随机字符串, TIMESTAMP
是生成这个随机字符串和 SIGNATURE
的 UNIX 时间戳。它们是用于计算签名 SIGNATRUE
的参数,签名算法为:
其中,APPID
是 所在小程序 的 AppId (可以从请求头的 referrer
中获得);TOKEN
是插件 Token,可以在小程序插件基本设置中找到。
网络请求的 referer 格式固定为 {appid}/{version}/,其中 {appid} 为小程序的 appid,{version} 为小程序的版本号,版本号为 0 表示为开发版、体验版以及审核版本,版本号为 devtools 表示为开发者工具,其余为正式版本。
插件开发者可以在服务器上按以下步骤校验签名:
自基础库版本 开始,在小程序运行期间,若网络状况正常, NONCESTR
和 TIMESTAMP
会每 10 分钟变更一次。如有必要,可以通过判断 TIMESTAMP
来确定当前签名是否依旧有效。