“我只会简单开发小程序,不会做复杂的功能怎么办?” “我想给餐馆小程序做一个预约订餐功能,要怎么搞?” “客户可以在我的小程序里查询快递信息吗?” “我没有数据,可以在小程序里做地图查找功能吗?”……
针对大家在开发小程序过程中的种种难题,我们专门开设了“小程序课”栏目,为你带来小程序技术能力的最全解读。
以上大家提出的问题,通过我们前不久推出的“小程序插件”就能轻松解决。想了解更多详细内容?看看微信开发小哥为你“定制”的课程吧——
小程序插件的“前世今生”
1 小程序插件简介
小程序插件是可以被开发者添加到小程序内直接使用的,能为用户提供具体服务的功能组件。
插件开发者可像开发小程序一样开发插件,除了在自己的小程序内使用,还能提供给其他小程序直接使用。
插件使用者无需独立开发小程序内的所有服务,无需理解插件内部逻辑和实现方式,可直接使用别人开发好的插件,为用户提供相应服务。
2 推出小程序插件的原因
小程序的初衷是希望更好地连接用户和服务。自上线以来,越来越多的商户、开发者开发了自己的小程序。
早晨起来在小区电梯内,扫小程序码,即可叫个早餐外卖;
走到门口,扫共享单车的二维码,骑车即走;
到了公司,即可打开小程序轻松打卡,开始美好的一天上班生活……
同时,我们总结出大家在开发小程序当中最常见的几个难题:
● 开发技术有限,实现复杂功能难度大
● 人力、设备、资源有限,实现服务成本高
● 缺乏某些类目的资质,如电商、打车
这些难题要怎么解决?需要花费大量的人力物力吗?
答案是:小程序插件就能轻松帮你解决!
如何更好地应用小程序插件?
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的形式使用即可。
对于插件开发者而言,这里给出几点建议:
● 提供充分的接口文档和示例,方便插件使用者了解插件的使用方法;
● 注意保持插件不同版本间接口的稳定,使插件使用者能顺利升级插件;
● 计算小程序代码包大小时,插件代码也会一并计算在内,所以应当控制好插件代码的大小。
了解插件代码的运行环境
插件代码的运行环境与小程序代码有一定的区别,主要是以下两点:
● 插件可以发起网络请求的域名与小程序不同,因此插件开发者需要注意在插件后台的设置中正确配置网络请求域名;
● 插件可以调用的 API 有一定的限制,并不是所有的接口插件都可以调用,如页面跳转相关的接口是不允许插件调用的。插件开发者在使用一些特殊接口前,请查询文档中的插件可调用接口列表。
此外,目前一个小程序最多可使用5个插件,赶紧将插件用起来,节约开发者成本吧。
详情可参考《小程序插件接入指南》。
|