小程序插件是可被添加到小程序内直接使用的功能组件,在不同的小程序内叫法可能略有区别。
微信小程序、支付宝小程序中叫插件,百度小程序中叫动态库,方便起见,以下统一称为插件。

参考文档

  • 微信小程序插件
  • 支付宝小程序插件
  • 百度小程序动态库


    引入插件代码包

    使用插件之前开发者需要在manifest.json中的各平台对应的字段内声明使用的插件,具体配置参照所用插件的开发文档

    代码示例

    1. // 微信小程序
    2. "mp-weixin": {
    3. "plugins": {
    4. "myPlugin": {
    5. "version": "1.0.0",
    6. "provider": "wxidxxxxxxxxxxxxxxxx"
    7. }
    8. }
    9. }
    10. // 支付宝小程序
    11. "mp-alipay": {
    12. "myPlugin": {
    13. "version": "*",
    14. "provider": "2019235609092837"
    15. }
    16. }
    17. // 百度小程序
    18. "mp-baidu": {
    19. "dynamicLib": {
    20. "myPlugin": {
    21. "provider": "TheUniqueNameOwnedByThisDynamicLib"
    22. }
    23. }
    24. }

    在页面中使用

    在页面内使用插件需要在pages.json内对应页面的style节点下配置对应平台的usingComponents,示例如下。
    "hello-component": "plugin://myPlugin/hello-component"为例,key(冒号前的hello-component)为在页面内使用的组件名称。value分为三段,plugin为协议(在百度小程序内为dynamicLib),myPlugin为插件名称即引入插件时的名称,hello-component为插件暴露的组件名称。
    1. // 微信小程序
    2. {
    3. "path": "pages/index/index",
    4. "style": {
    5. "mp-weixin": {
    6. "usingComponents": {
    7. "hello-component": "plugin://myPlugin/hello-component"
    8. }
    9. }
    10. }
    11. }
    12. // 支付宝小程序
    13. {
    14. "path": "pages/index/index",
    15. "style": {
    16. "mp-alipay": {
    17. "usingComponents": {
    18. "hello-component": "plugin://myPlugin/hello-component"
    19. }
    20. }
    21. }
    22. }
    23. // 百度小程序
    24. {
    25. "path": "pages/index/index",
    26. "style": {
    27. "mp-baidu": {
    28. "usingComponents": {
    29. "my-special-list": "dynamicLib://myDynamicLib/special-list"
    30. }
    31. }
    32. }
    33. }

    在分包内引入插件代码包

    支付宝小程序、百度小程序不支持在分包内引入插件。
    此外如果项目使用了分包,在支付宝小程序内不可使用插件。
    本节内容仅针对微信小程序。

如果插件只在(同一个插件不能被多个分包同时引用)一个分包用到,可以单独配置到分包中,这样插件不会随主包加载,开发者可以在pages.jsonsubPackages中声明插件

代码示例

  1. "subPackages": [{
  2. "root": "pagesA",
  3. "pages": [{
  4. "path": "list/list"
  5. }]
  6. "plugins": {
  7. "pluginName": {
  8. "version": "1.0.0",
  9. "provider": "wxidxxxxxxxxxxxxxxxx"
  10. }
  11. }
  12. }]

在分包内使用插件的限制

  • 仅能在这个分包内使用该插件;
  • 同一个插件不能被多个分包同时引用;
  • 不能从分包外的页面直接跳入分包内的插件页面,需要先跳入分包内的非插件页面、再跳入同一分包内的插件页面。

    可能遇到的问题

  • 某些插件可能会需要一些权限才能正常运行,请在manifest.json中的mp-weixin内配置permission详见

  • 微信开发工具提示 “插件版本不存在”,可能是插件开发文档示例代码中使用的版本已经不存在,请在声明插件处更改版本