为什么要插件

同公司多个小程序要共用同一块能力:支付组件、客服、地图、选择器。复制粘贴代码会越积越乱。插件把这块能力独立成一个项目,发布后被其他小程序引用,升级一次所有调用方同步。

插件 = 可独立发布、被其他小程序复用的模块。

插件最容易踩的坑是把接口设计成一坨。对外方法要小而稳,入参出参写清楚,一旦发布就别轻易改。版本号语义化,调用方按需升级。

插件 vs 自定义组件
  • 组件项目内复用。
  • 插件跨项目复用,独立发布。
插件配图:一块发光的拼图块轮廓嵌入一整块模块化方块网格,网格节点处有发光连接点
拼图块嵌入网格,节点发光连接。

插件项目结构

插件项目分 plugin 目录和主包目录。plugin 目录里放对外暴露的页面、组件、JS 接口。主包可以是一个演示小程序,用来本地调试插件。

// plugin.json 声明对外暴露
{ "publicPages": ["pages/index/index"], "publicComponents": {"picker":"components/picker/index"}, "main": "index.js" }

对外暴露的接口

插件通过 main 暴露 JS 方法,其他小程序调用这些方法。暴露前要想清楚接口边界,入参出参写清楚。一旦发布,接口改动会影响所有调用方。

被调用方接入

调用方在 app.json 的 plugins 里声明插件 ID 与版本,就能直接用插件的页面、组件、JS 接口。插件页面跳转时路径要带 plugin:// 前缀。

发布与版本

插件也要提审发布。版本号语义化,破坏性升级升大版本,调用方按需升级。建议先在少数调用方灰度,再全量。

插件最容易踩的坑是把接口设计成一坨。对外方法要小而稳,入参出参写清楚,一旦发布就别轻易改。版本号语义化,调用方按需升级。

落地清单
  • 边界接口要稳。
  • 版本语义化升级。
  • 演示主包用于调试。
  • 灰度先小范围。