背景
小程序插件简介
小程序插件是可以被开发者添加到小程序内直接使用的,能为用户提供具体服务的功能组件。
插件开发者可像开发小程序一样开发插件,除了在自己的小程序内使用,还能提供给其他小程序直接使用。
插件使用者无需独立开发小程序内的所有服务,无需理解插件内部逻辑和实现方式,可直接使用别人开发好的插件,为用户提供相应服务。
推出小程序插件的原因
小程序的初衷是希望更好地连接用户和服务。自上线以来,越来越多的商户、开发者开发自己的小程序。
早晨起来在小区电梯内,扫小程序码,即可叫个早餐外卖;
走到门口,扫共享单车的二维码,骑车即走;
到了公司,即可打开小程序轻松打卡,开始美好的一天上班生活……
随着小程序的普及,越来越多的路边小摊、餐饮小店、夫妻店也希望接入小程序。许多商家会给我们留言:
“我只会简单开发,不会做复杂的功能怎么办?”
“我也想给餐馆小程序做一个预约订餐功能,要怎么搞?”
“客户可以在我的小程序里查询快递信息吗?”
“我没有数据,可以在小程序里做地图查找功能吗?”……
我们总结出大家目前遇到的几个难题:
1.开发技术有限,实现复杂功能难度大
2.人力、设备、资源有限,实现服务成本高
3.缺乏某些类目的资质,如电商、打车
小程序插件的应用
1.开发共享,避免重复开发
在小程序内使用插件,可免去小程序开发者重复开发,一定程度上减少了开发工作量。
如:在旅游景区的小程序可以使用地图插件,开发者无需在小程序内独立开发地图内导航、出行指引、周边服务推荐等能力,直接使用地图插件即可为用户提供导航服务,免去很大量的开发工作。
2.插件可提供针对行业的完整服务,同时覆盖线上线下
商家希望借助小程序更好地连接用户和服务,包括线上、线下服务。线下服务往往人力成本、硬件设备等要求较高,商家在小程序内提供完整服务的门槛较高。而插件不仅可以解决线下服务的问题,还能针对特定行业提供全套完整服务。
以景区服务小程序为例,使用门票购买插件,用户可在小程序内完成门票线上预订、购买等流程,在到达景区后,通过插件服务提供商提供的移动终端或硬件设备,可完成门票兑换、核销。
而对于餐饮、零售等线下行业而言,插件更是极大降低了商家的成本,商家可以使用预订、排队、外卖等插件,由插件开发者提供线下服务,商家只需在小程序内引用插件,即可使用由插件开发者提供的预订、外卖等服务,节省了成本。
3. 降低服务门槛的问题,实现“服务共享”
具有开发能力及服务资质的开发者,可将自己的服务封装成插件,提供给其他小程序使用,实现“服务共享”。
插件的技术原理
插件本身的技术原理并不复杂。插件代码由一些自定义组件和 JS 代码文件构成,插件开发者在发布插件时,这些代码被上传到微信后台保存起来。
当小程序使用插件时,使用者需填写插件的 AppID 和版本号,以便从后台获取相应的插件代码。小程序代码编译时,插件代码会被嵌入到小程序中,与小程序一起编译运行。
小程序与插件的交互
根据需要,插件代码可以提供 JS 接口或自定义组件供小程序调用。JS 接口可以用于界面无关的逻辑,自定义组件可以嵌入界面中展示。
对于插件使用者来说,插件的调用方法很简单。
1.使用插件 JS 接口
与普通 JS 文件间 require
的方式一样,只需要将require(FILE_NAME)
改成requirePlugin(PLUGIN_NAME)
这样的调用形式。
2.使用插件提供的自定义组件
与使用普通自定义组件的方法非常相似。在json
文件的 usingComponents
段落中,按照plugin://PLUGIN_NAME/COMPONENT_NAME
的形式使用即可。
对于插件开发者而言,这里给出几点建议:
1.提供充分的接口文档和示例,方便插件使用者了解插件的使用方法;
2.注意保持插件不同版本间接口的稳定,使插件使用者能顺利升级插件;
3.计算小程序代码包大小时,插件代码也会一并计算在内,所以应当控制好插件代码的大小。
插件代码运行环境
插件代码的运行环境与小程序代码有一定的区别,主要是以下两点:
1.插件可以发起网络请求的域名与小程序不同,因此插件开发者需要注意在插件后台的设置中正确配置网络请求域名。
2.插件可以调用的 API 有一定的限制,并不是所有的接口插件都可以调用,如页面跳转相关的接口是不允许插件调用的。插件开发者在使用一些特殊接口前,请查询文档中的插件可调用接口列表。
此外,目前一个小程序最多可使用5个插件,赶紧将插件用起来,节约开发者成本吧。
详情可参考《小程序插件接入指南》。
能否提供一些更加具体的插件开发事例?
现在遇到点问题:
如果暴露插件中JS函数,供外部调用?
如果外部传值到properties中后,JS中如何获取该值?
this.data.NAME
properties中的内容存在data里面
小程序的插件和我们常用的插件区别主要再去对插件代码的保护,在小程序中合理使用优秀的插件是很有必要的。
插件收费吗
请问有人知道 有的插件用到的分销码是什么呀,这个值从哪获取呀
能帮忙解释一下插件在小程序里面的运行方式,是引入插件之后,运行的时候会自动下载插件的代码然后再本地运行嘛
小程序插件跟小程序是如何做到上下文隔离的?是独立的 JS. Context 吗?
想问下,小程序内接入插件,从原生页面进入插件时会有需要用户确认的弹窗吗?
小程序插件和VKSession的api会冲突,导致小米11运行VKSession崩溃https://developers.weixin.qq.com/community/develop/doc/0000669914c9209a4b5d8a9b55b400?fromCreate=0
插件不可以给现在的微信小程序返回数据吗?
想了解一下,插件可以跳H5页面吗??可以的话,应该怎么跳呢??