切换主题
插件类型总览
webos v2 提供四种扩展方式。选择时先判断业务是否需要独立后端、结构化数据库、进程生命周期管理,以及页面是否已经部署在其他位置。
选择表
| 类型 | PluginType | 适合场景 | 是否有独立后端 | 访问入口 |
|---|---|---|---|---|
| 主程序插件 | 1 | Go 后端、数据库、缓存、队列、锁、事件、后台任务 | 是 | /page/{code}/ |
| 前端插件 | 2 | 静态页面、报表、工具页、少量用户级数据 | 否 | /api/webplugin/{code}/ |
| 第三方插件 | 3 | Node、Java、Python、Go、Rust 等独立 Web 程序 | 自带 | /api/thirdplugin/{code} |
| 远程应用 | 4 | 已部署的 SaaS、内网站点和已有管理系统 | 远程提供 | AccessUrl |
如何选择
需要内核后端能力
如果业务需要结构化数据库、事务、缓存、消息队列、分布式锁、事件订阅、日志或后台任务,使用主程序插件。
只有前端资源
如果页面只需要 HTML、CSS、JavaScript,或者调用已有 HTTP API,并仅保存少量偏好或草稿数据,使用前端插件。
已有可运行程序
如果已有程序需要随 webos v2 在本地启动、停止和升级,使用第三方插件。webos v2 负责进程生命周期,真实 Web 服务仍由第三方程序提供。
已有固定 URL
如果系统已经部署在公网或内网,只需要加入 webos v2 工作台,使用远程应用。远程站点必须允许 iframe 嵌入。
通用元数据
插件包根目录通常包含 index.json,常见字段如下:
json
{
"Name": "插件名称",
"Description": "插件说明",
"Code": "plugin_code",
"Status": "1",
"Version": "1.0.0",
"PluginType": "1",
"LimitVersion": "1.0.0",
"IconUrl": "/page/plugin_code/logo.png",
"Log": "首发"
}1
2
3
4
5
6
7
8
9
10
11
2
3
4
5
6
7
8
9
10
11
关键约束:
Code必须和目录名、插件表记录及代码中的插件编码一致。PluginType决定访问路径与运行方式。Status = 1才会启用插件。- 主程序插件需要可执行文件或调试端口。
- 前端插件需要
index.html。 - 第三方插件需要启动与停止脚本,以及
ThirdPort与AccessUrl。
SDK 与窗口系统
主程序插件前端和前端插件都可以接入 webos v2 SDK:
html
<script src="../../assets/sdk.js"></script>1
SDK 提供:
- 主题变量与个性化变化通知
- 插件数据请求
- 窗口创建与父子窗口通信
- 事件订阅与发送
- 右键菜单、剪贴板和消息提示
插件页面应优先使用 webos v2 提供的主题变量和窗口系统,不要把颜色、圆角和弹窗行为写死。