uni-app编译为小程序插件完整指南

Viewed 0

本文介绍如何将 uni-app 项目编译为小程序插件。如果您想了解如何在 uni-app 中引用和使用小程序插件,请参考另一篇文档:使用小程序插件

小程序插件规范由小程序厂商定义,插件是对一组 js 接口、自定义组件或页面的封装,用于嵌入到小程序中使用。uni-app 不仅可以开发完整的小程序,还可以编译为小程序插件。

平台差异说明

各平台对编译为小程序插件的支持情况如下:

  • 微信小程序:√
  • 支付宝小程序:√(从版本 3.2.9+ 开始支持)
  • 百度小程序:x
  • 抖音小程序、飞书小程序:x
  • QQ 小程序:x
  • 快手小程序:x
  • 京东小程序:x
  • 小红书小程序:x

注意

  1. 开发微信小程序插件时,基础库版本从 1.9.6 开始支持(如果插件包含页面,则需要基础库版本 2.1.0)。
  2. 开发支付宝小程序插件时,支付宝 IDE 版本要求在 0.60 及以上。

插件目录结构

编译到微信小程序插件的结果会生成特定的目录结构,您可以在项目根目录的 dist/dev/mp-weixin/ 下找到插件代码。

插件配置文件

在 uni-app 项目中,plugin.json 文件与 pages.json 同级,用于向第三方小程序声明所有开放的组件、页面和 js 接口。

  • 微信小程序 (mp-weixin)

    • publicComponents:列出所有向小程序开放的自定义组件。
    • pages:列出所有向小程序开放的页面。
    • main:插件面向第三方小程序的 js 接口。
  • 支付宝小程序 (mp-alipay)

    • publicComponents:列出所有向小程序开放的自定义组件。
    • publicPages:列出所有向小程序开放的页面。
    • pages:列出插件所有页面(包括开放和不开放的)。
    • main:插件面向第三方小程序的 js 接口。

注意

  1. 微信小程序的 pages 项与支付宝小程序的 publicPages 项作用一致。
  2. 支付宝小程序中供外部使用的页面需要在 pages 中声明,且为数组类型。
  3. 由于两端格式不一致,可以在 plugin.json 中使用条件编译来处理差异。

编译步骤

  1. 将 CLI 创建的工程编译器依赖更新到 3.2.1 以上(更新方法参考 官方文档)。
  2. 执行命令行:yarn dev:mp-weixin -- --plugin plugin-name,其中 plugin-name 为插件包的名字。
  3. 编译后,插件代码位于 项目根目录\dist\dev\mp-weixin\plugin-name 目录中。
  4. 支付宝小程序平台插件编译功能后续发布,请留意更新日志。

如何在项目中使用插件

  1. 如果宿主小程序是 uni-app 项目,在 manifest.json 中配置相关信息即可,详情参考 uni-app 文档
  2. 如果宿主为原生小程序,在项目的 app.json 中配置:

在插件中使用条件编译

有时项目需要同时编译为插件和正常小程序,但某些 API 可能不适用于两端,此时可以使用自定义条件编译来区分。

  1. package.json 中添加自定义条件编译配置,详情参考 uni-app 条件编译文档
  2. 在代码中使用条件编译指令,例如 #ifdef MP-WX-PLUGIN
  3. 编译时执行命令:yarn dev:custom mp-wx-plugin --plugin test-plugin,可将此脚本写入 package.jsonscripts 中以简化操作。

注意

  1. 组件在插件内部未使用时,如果需要在宿主小程序中使用,必须在 main.js 中引入,否则编译后会丢失。
  2. 插件中编写的页面需要在 pages.json 中声明。
  3. 如果有多个 uni-app 编译的插件运行在同一个小程序中,确保插件名称不重复。
  4. 插件名称不要包含特殊字符(如 \),- 会被自动替换为 _,其他特殊字符也应避免。
  5. 各家小程序插件对 API 的支持情况不同,具体请查阅小程序官方文档。
0 Answers