FinClip 中如何使用小程序插件?

小程序插件可以理解为小程序的扩展功能,类似于应用商店中的插件。通过引入插件,我们可以给小程序添加一些特定的功能模块,例如支付、地图、广告、分享等。这样一来,开发者就可以更加灵活地为用户提供丰富的体验。

大家所熟知的微信、字节、支付宝小程序平台都提供了丰富的插件,也允许开发者根据特定行业的需求进行定制开发。每年插件的数量和种类在不断增加,以适应不同行业的需求。但是平台处于安全合规的考虑,对金融、医疗、游戏、电商、教育、直播、旅游等行业都有特殊限制。

以微信和支付宝为例,使用微信开发者工具和支付宝IDE工具即可高效率的完成一个小程序插件的创建和开发,具体的开发指南可访问:

使用插件 | 微信开放文档
插件使用 | 支付宝开放文档

当然,在自有小程序中引入小程序插件就比较灵活,对于游戏、金融、教育、电商、社交等大平台限制的行业,小程序开发者有更高的操作权限。如何在自有小程序中引入插件呢?这里我们以FinClip 小程序为例进行实践。开发者可在小程序代码中引入插件代码的声明,然后在使用 FIDE 开发工具进行编译时, FIDE 会从服务端获取插件代码一起进行打包编译。 

在查看使用教程之前,建议各位先回顾一下这一篇:

1、寻找需要的插件

在使用插件前,开发者可登录「小程序开放平台-小程序管理-小程序插件」,获取插件ID信息,查找插件并添加。在 FinClip 中使用插件不需要申请,可以直接使用。

2、引入插件代码包

使用插件前,使用者要在app.json中声明需要使用的插件,例如:

{

  "plugins": {

    "myPlugin": {

      "version""1.0.0",

      "provider""插件 id"

    }

  }

}

如上例所示,plugins定义段中可以包含多个插件声明,每个插件声明以一个使用者自定义的插件引用名作为标识,并指明插件的 ID和需要使用的版本号。

其中,引用名(如上例中的myPlugin)由使用者自定义,无需和插件开发者保持一致或与开发者协调。在后续的插件使用中,该引用名将被用于表示该插件。

3、在分包内引入插件代码包

如果插件只在一个分包内用到,可以将插件仅放在这个分包内,例如:

{

  "subpackages": [

    {

      "root""packageA",

      "pages": [

        "pages/cat",

        "pages/dog"

      ],

      "plugins": {

        "myPlugin": {

          "version""1.0.0",

          "provider""插件 id"

        }

      }

    }

  ]

}

在分包内使用插件有如下限制:

  • 仅能在这个分包内使用该插件;
  • 同一个插件不能被多个分包同时引用;
4、使用自定义组件

使用插件提供的自定义组件,和 使用普通自定义组件 的方式相仿。在json文件定义需要引入的自定义组件时,使用plugin:// 协议指明插件的引用名和自定义组件名,例如:

{

  "usingComponents": {

    "hello-component""plugin://myPlugin/hello-component"

  }

}

出于对插件的保护,插件提供的自定义组件在使用上有一定的限制:

  • 默认情况下,页面中的 this.selectComponent接口无法获得插件的自定义组件实例对象;
  • ft.createSelectorQuery等接口的>>> 选择器无法选入插件内部。
5、使用页面

需要跳转到插件页面时,url 使用plugin://前缀,形如plugin://PLUGIN_NAME/PLUGIN_PAGE, 如:

<navigator url="plugin://myPlugin/hello-page">

  Go to pages/hello-page!

</navigator>

6、使用接口

使用插件的js接口时,可以使用requirePlugin方法。例如,插件提供一个名为hello的方法和一个名为world的变量,则可以像下面这样调用:

var myPluginInterface = requirePlugin('myPlugin');

myPluginInterface.hello();

var myWorld = myPluginInterface.world;

接口也可以通过插件的 id 来获取接口,如:

var myPluginInterface = requirePlugin('插件 id');

7、导出到插件

使用插件的小程序可以导出一些内容,供插件获取。具体来说,在声明使用插件时,可以通过export字段来指定一个文件,如:

{

  "myPlugin": {

    "version""1.0.0",

    "provider""插件 id",

    "export""index.js"

  }

}

则该文件(上面的例子里是index.js)导出的内容可以被这个插件用全局函数获得。在上面的文件中,使用插件的小程序做了如下导出:

// index.js

module.exports = { whoami: 'MiniProgram' }

那么插件就可以获得上面导出的内容:

// plugin

requireMiniProgram().whoami // 'MiniProgram'

具体导出什么内容,可以阅读插件开发文档,和插件的开发者做好约定。

当插件在分包中时,这个特性也可以使用,但指定的文件的路径是相对于分包的。例如在root: packageA 的分包中指定了export: exports/plugin.js,那么被指定的文件在文件系统上应该是/packageA/exports/plugin.js

8、为插件提供自定义组件

有时,插件可能会在页面或者自定义组件中,将一部分区域交给使用的小程序来渲染,因此需要使用的小程序提供一个自定义组件。但由于插件中不能直接指定小程序的自定义组件路径,因此需要通过为插件指定抽象节点(generics)的方式来提供。

如果是插件的自定义组件需要指定抽象节点实现,可以在引用时指定:

<!-- miniprogram/page/index.fxml -->

<plugin-view generic:mp-view="comp-from-miniprogram" />

可以通过配置项为插件页面指定抽象组件实现。例如,要给插件名为plugin-index的页面中的抽象节点mp-view指定小程序的自定义组件components/comp-from-miniprogram作为实现的话:

{

  "myPlugin": {

    "provider""插件 id",

    "version""1.0.0",

    "genericsImplementation": {

      "plugin-index": {

        "mp-view""components/comp-from-miniprogram"

      }

    }

  }

}

  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值