(5)小程序插件

背景

小程序插件简介

小程序插件是可以被开发者添加到小程序内直接使用的,能为用户提供具体服务的功能组件。
插件开发者可像开发小程序一样开发插件,除了在自己的小程序内使用,还能提供给其他小程序直接使用。
插件使用者无需独立开发小程序内的所有服务,无需理解插件内部逻辑和实现方式,可直接使用别人开发好的插件,为用户提供相应服务。

推出小程序插件的原因

小程序的初衷是希望更好地连接用户和服务。自上线以来,越来越多的商户、开发者开发自己的小程序。
早晨起来在小区电梯内,扫小程序码,即可叫个早餐外卖;
走到门口,扫共享单车的二维码,骑车即走;
到了公司,即可打开小程序轻松打卡,开始美好的一天上班生活
……

随着小程序的普及,越来越多的路边小摊、餐饮小店、夫妻店也希望接入小程序。许多商家会给我们留言:
“我只会简单开发,不会做复杂的功能怎么办?”
“我也想给餐馆小程序做一个预约订餐功能,要怎么搞?”
“客户可以在我的小程序里查询快递信息吗?”
“我没有数据,可以在小程序里做地图查找功能吗?”……

我们总结出大家目前遇到的几个难题:

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个插件,赶紧将插件用起来,节约开发者成本吧。

详情可参考《小程序插件接入指南》

最后一次编辑于  08-17  (未经腾讯允许,不得转载)
收藏 0评论 12
  • QuietwaitQuietwait

    能否提供一些更加具体的插件开发事例?

    现在遇到点问题:

    如果暴露插件中JS函数,供外部调用?

    如果外部传值到properties中后,JS中如何获取该值?

    赞同 2没有帮助
    0评论
    复制
    04-18
  • A 野子A 野子

    你好,请问个人小程序后台没有插件功能开通吗?

    赞同 0没有帮助
    0评论
    复制
    06-22
  • 两个鱼头两个鱼头

    我想问问大家,我不知道插件的id怎么找插件啊 各位

    赞同 0没有帮助
    0评论
    复制
    05-23
  • tonytony

    为什么小程序插件内不能使用wx.login wx.getUserInfo


    赞同 0没有帮助
    0评论
    复制
    05-19
  • 山里育山里育

    是否不对个人开放?

    赞同 0没有帮助
    0评论
    复制
    05-18
  • saxon江江saxon江江

    1.插件不能支付,一大堆场景就不适用了;

    2.插件不能跳转页面,则插件只能有一个页面?

    上面景区门票购买例子,难道门票展示、购买、订单、核销,都是在一个页面里?

    3.插件不能做用户登录,哪怕是静默方式,那预约、订餐、打车,如何标识用户?


    以上虽然可以通过使用插件的小程序代替插件来实现,但是好麻烦,增加接入插件门槛。

    感觉插件受限蛮大的

    赞同 0没有帮助
    0评论
    复制
    05-02
  • 只为稻花香只为稻花香

    插件哪里有啊?

    赞同 0没有帮助
    0评论
    复制
    04-30
  • 。。。。。。。。。。。。

    正在写 网上预约订餐的小程序,感觉好懵。

    赞同 0没有帮助
    0评论
    复制
    04-27
  • 胡佳南胡佳南

    又开始重新造轮子了,本来就用H5就好了,非要搞的那么麻烦

    赞同 0没有帮助
    0评论
    复制
    04-26
  • 轱辘人生13905815588轱辘人生13905815588

    我可以提供各行业的小程序拖拽式模板

    赞同 0没有帮助
    0评论
    复制
    04-25