为什么要插件
同公司多个小程序要共用同一块能力:支付组件、客服、地图、选择器。复制粘贴代码会越积越乱。插件把这块能力独立成一个项目,发布后被其他小程序引用,升级一次所有调用方同步。
插件 = 可独立发布、被其他小程序复用的模块。
插件最容易踩的坑是把接口设计成一坨。对外方法要小而稳,入参出参写清楚,一旦发布就别轻易改。版本号语义化,调用方按需升级。
插件 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:// 前缀。
发布与版本
插件也要提审发布。版本号语义化,破坏性升级升大版本,调用方按需升级。建议先在少数调用方灰度,再全量。
插件最容易踩的坑是把接口设计成一坨。对外方法要小而稳,入参出参写清楚,一旦发布就别轻易改。版本号语义化,调用方按需升级。
落地清单
- 边界接口要稳。
- 版本语义化升级。
- 演示主包用于调试。
- 灰度先小范围。
调试与限制
插件不直接访问调用方的私有数据,权限按调用方申请的来。本地调试用主包引插件预览。正式发布前要在调用方项目里完整跑一遍。
小结与延伸阅读
插件是小程序跨项目复用的正解。把通用能力抽成插件,多个小程序共享一份实现,升级一次全员受益。
- 组件库读《小程序自定义组件与组件库开发实战》。
- H5 能力读《微信 JS-SDK 与网页授权实战》。
- 云后端读《小程序云开发进阶实战》。