昨天(2018.3.13),微信小程序发布了重大功能更新,支持插件的使用和开发,个人预计,不超过2个月,优质服务的插件将会如雨后春笋般涌现。

这篇文章,我将会带大家,从0开始,学习如何开发和使用插件。文章分为3个章节:

  • 1、什么是微信小程序插件

  • 2、如何开发微信小程序插件

  • 3、如何使用第三方微信小程序插件

备注:为了节省文字内容,我会将“微信小程序插件”简称为“插件”。

什么是微信小程序插件?

插件一组由js和自定义组件封装的代码库,插件无法单独使用、也无法预览,必须被其他小程序应用嵌入,才能使用。它和NPM的依赖、Maven的依赖库是一个道理。

不过,插件和NPM、Maven依赖管理不同的是:

  • 插件拥有独立的API接口和域名列表,不被小程序本身的域名列表限制。(NPM依赖进来的库不能进行第三方数据请求)

  • 插件必须由腾讯审核通过才能使用(NPM无需腾讯审核)

  • 使用第三方插件必须向第三方申请 (通过NPM使用第三方库无需向第三方申请)

所以,我觉得:在未来,插件应该会被第三方打包成为服务,而不仅仅只是一个代码库。

如何开发微信小程序插件?

下载最新的微信小程序开发者工具,(必须是 1.02.1803130 版本以上),打开开发者工具,进入小程序项目,我们会看到“代码片段”标签,如下图:

点击,右下角的 “创建” 按钮,就可以创建插件了,如下图:

插件的AppId和之前的微信小程序的AppId是同个道理,需要在微信开发者后台新建一个微信小程序插件:

微信小程序插件的名称也必须是独一无二的,申请完毕后就可以获得 插件的AppId了。

填写名称和插件AppID后,进入小程序项目,如下图显示:

项目的代码目录结构如下:

├── miniprogram
│   ├── app.js
│   ├── app.json
│   └── pages
├── plugin
│   ├── api
│   ├── components
│   ├── index.js
│   └── plugin.json
└── project.config.json

在文件 project.config.json 中,我们看到代码如下:

{
   "miniprogramRoot": "./miniprogram",
   "pluginRoot": "./plugin",
   "compileType": "plugin",
   "setting": {
       "newFeature": true
   },
   "appid": ".....",
   "projectname": "videoPlayer",
   "condition": {}
}
  • miniprogramRoot:配置小程序的根目录,可以使用小程序来测试编写的插件

  • pluginRoot:插件相关代码所在的根目录

  • compileType:项目的编译类型,必须配置为 plugin,在上传代码的时候才会以插件的方式上传到腾讯服务器。

在 plugin/plugin.json 文件中,代码如下:

{
 "publicComponents": {
   "hgPlayer": "components/player/player"
 },
 "main": "index.js"
}
  • publicComponents:配置的是插件可以给使用的小程序提供哪些组件,一个插件可以定义很多个组件,组件和组件之间相互引用,但是小程序只能使用在publicComponents里配置的组件。

  • main:定义入口文件,在入口文件 index.js 中定义小程序可以使用插件的那些接口。

在 plugin/index.js 文件中,代码如下:

var data = require('./api/data.js')

module.exports = {
 getData: data.getData,
 setData: data.setData
}

在 plugin/index.js 定义了对外抛出接口为 getData 和 setData,小程序在使用这个插件的时候,只能使用到插件提供的这两个接口,插件的其他接口(或方法)小程序无法使用。

做好以上配置后,就可以开始在 plugin/components 编写组件代码了,例如我写了我的播放器组件,代码如下:

player.js:

Component({
 data: {
   myData:[]
 }
})

player.wxml:

<view class="section tc">
 <video id="myVideo" src="..."  enable-danmu danmu-btn controls>
 </video>
</view>

值得注意的是:

  1. 编写组件是调用 Component() 定义组件代码,和App() 、Page()一样的道理。

  2. 在组件能能够调用的微信API受限,比如说不能调用 wx.login() 获取用户信息,具体限制在:https://mp.weixin.qq.com/debug/wxadoc/dev/framework/plugin/api-limit.html

代码编写完毕后,注意在 plugin/plugin.json 文件配置:

{
 "publicComponents": {
   "hgPlayer": "components/player/player"
 },
 "main": "index.js"
}

表示使用该插件的小程序,可以使用 hgPlayer 这个组件,组件hgPlayer对应的代码是 "components/player/player"

配置好后,我就可以上传插件代码到腾讯服务器,进入微信小程序开发者后台提交审核,腾讯审核通过后,第三方小程序就可以使用我们编写的这个插件了。

如何使用第三方插件

使用第三方插件之前,需要进入微信小程序开发者后台,在第三方服务里添加插件:

填写第三方插件的AppId,点击添加按钮,对方账号的 小程序插件 > 申请管理 会出现你的申请,如下图:

需要第三方同意你的申请后,你就可以开始使用第三方插件了。

使用第三方插件的时候,需要在 我们自己的小程序的 app.json 做如下配置:

{
 "pages": [
   "pages/index/index"
 ],
 "plugins": {
   "myPlugin": {
     "version": "dev",
     "provider": "填写申请通过的插件AppId"
   },
   "plugin1": {
     "version": "dev",
     "provider": "填写申请通过的插件AppId"
   },
    "plugin2": {
     "version": "dev",
     "provider": "填写申请通过的插件AppId"
   }
   ...
 }
}

plugins: 配置的要使用的第三方插件列表。

插件列表配置好后,由于每个插件可能会有多个组件,所以需要我们在每个页面定义要使用到的组件,例如,在 index.js 中要使用 hgPlayer 这个组件,需要在 index.json 配置如下:

{
 "usingComponents": {
   "player": "plugin://myPlugin/hgPlayer"
 }
}

 

"player": "plugin://myPlugin/hgPlayer" 的含义是:要本页面使用插件 myPlugin 的组件 hgPlayer,同时在本页面的别名为 :player 。

配置好 index.json 后,就可以在 index.wxml 直接使用了,例如:

<view class="xxxx">
   <player />
</view>

微信小程序插件 - 开发教程的更多相关文章

  1. Django微信小程序后台开发教程

    本文链接:https://blog.csdn.net/qq_43467898/article/details/83187698Django微信小程序后台开发教程1 申请小程序,创建hello worl ...

  2. 微信小程序-云开发实战教程

    微信小程序-云开发实战教程 云函数,云存储,云数据库,云调用 https://developers.weixin.qq.com/miniprogram/dev/wxcloud/basis/gettin ...

  3. 【推荐】开源项目minapp-重新定义微信小程序的开发

    minapp 重新定义微信小程序的开发 官网:https://qiu8310.github.io/minapp/ 作者:Mora minapp 重新定义微信小程序的开发 使用 用 npm 安装命令行工 ...

  4. 微信小程序快速开发上手

    微信小程序快速开发上手 介绍: 从实战开发角度,完整系统地介绍了小程序的开发环境.小程序的结构.小程序的组件与小程序的API,并提供了多个开发实例帮助读者快速掌握小程序的开发技能,并能自己动手开发出小 ...

  5. 微信小程序从零开始开发步骤(六)4种页面跳转的方法

    用法:用于页面跳转,相当于html里面的<a></a>标签. API教程:https://mp.weixin.qq.com/debug/wxadoc/dev/component ...

  6. 微信小程序从零开始开发步骤(五)轮播图

    上一章完成页面自定义分享,这一章来说说轮播图,最常见的一个轮播图,中间带小圆点,自动轮播. Swiper是滑动特效插件,面向手机.平板电脑等移动终端.能实现触屏焦点图.触屏Tab切换.触屏多图切换等常 ...

  7. 微信小程序从零开始开发步骤(一)搭建开发环境

    从零到有写一个小程序系列专题,很早以前就想写来分享,但由于项目一直在进展,没有过多的时间研究技术,现在可以继续分享了. 1:注册 用没有注册过微信公众平台的邮箱注册一个微信公众号, 申请帐号 ,网址: ...

  8. 微信小程序从零开始开发步骤(一)

    从零到有写一个小程序系列专题,很早以前就想写来分享,但由于项目一直在进展,没有过多的时间研究技术,现在可以继续分享了.1:注册用没有注册过微信公众平台的邮箱注册一个微信公众号, 申请帐号 ,点击 ht ...

  9. BeautyWe.js 一套专注于微信小程序的开发范式

    摘要: 小程序框架... 作者:JerryC 原文:BeautyWe.js 一套专注于微信小程序的开发范式 Fundebug经授权转载,版权归原作者所有. 官网:beautywejs.com Repo ...

随机推荐

  1. js实现照片墙效果

    本次要实现的是一个照片墙的效果,如下图,很多图片随机的摆放在窗口中,当点击到某一张的时候,该张图片出现出现在窗口的水平垂直居中的位置. 首先,我们需要简单的结构处理图片,为了方便操作,引用了一个js库 ...

  2. random模块常用功能

  3. [UE4]Replications,复制

    关于进程 1.进程:运行中的程序 虚幻4游戏进程的四种网络模式 1.StandAlone:单机模式,不联网 2.Client,网络游戏中的客户端. 3.ListenServer,服务器和一个客户端 4 ...

  4. [UE4]Lock Always

    创建一个Widget加到视图,指定为鼠标焦点,并显示鼠标 Lock Always:叫鼠标锁定在游戏窗口内.

  5. 第9章 应用层(2)_动态主机配置协议(DHCP)

    2. 动态主机配置协议(DHCP) 2.1 静态地址和动态地址的应用场景 (1)静态地址应用场景 ①IP地址不经常更改的设备(如服务器地址) ②使用有规律的IP地址以便于管理(如学校机房为方便教师管理 ...

  6. scrapy框架之持久化操作

    1.基于终端指令的持久化存储 保证爬虫文件的parse方法中有可迭代类型对象(通常为列表or字典)的返回,该返回值可以通过终端指令的形式写入指定格式的文件中进行持久化操作. 执行输出指定格式进行存储: ...

  7. Web of Science API

    Web of Science API是通过Web Service获取Web of Science在线数据的应用程序接口,供各种编程语言调用.简单说,就是你能根据API实时.动态得到网页版Web of ...

  8. ASCII、Unicode和UTF-8

    转自廖雪峰的官方网站:https://www.liaoxuefeng.com/wiki/001374738125095c955c1e6d8bb493182103fac9270762a000/00138 ...

  9. spring得到所有Action类

    applicationContext对象.getBeansOfType(BaseAction.class)

  10. Element-UI安装和项目开发

          方法一:引入CDN 使用起来最简单的方法,直接引入CDN就可以工作了 <!-- 引入样式 --> <link rel="stylesheet" hre ...