做一个前后端联动的数据管理插件
前面的示例要么纯客户端(区块、字段、操作),要么客户端 + 简单接口(设置页)。这个示例展示一个更完整的场景——服务端定义数据表,客户端继承 TableBlockModel 获得完整的表格能力,再加上自定义字段组件和自定义操作按钮,组成一个有增删改查的数据管理插件。
这个示例把前面学到的区块、字段、操作串在一起,展示一个完整插件的开发流程。
前置阅读
建议先了解以下内容,开发时会更顺畅:
- 编写第一个插件 — 插件创建和目录结构
- Plugin 插件 — 插件入口和
load()生命周期 - FlowEngine → 区块扩展 — BlockModel、CollectionBlockModel、TableBlockModel
- FlowEngine → 字段扩展 — ClickableFieldModel、bindModelToInterface
- FlowEngine → 操作扩展 — ActionModel、ActionSceneEnum
- i18n 国际化 — 翻译文件写法和
tExpr()用法 - 服务端开发概述 — 服务端插件基础
最终效果
我们要做的是一个「待办事项」数据管理插件,包含以下能力:
- 服务端定义一张
todoItems数据表,插件安装时自动写入示例数据 - 客户端继承
TableBlockModel,开箱即用的表格区块(字段列、分页、操作栏等) - 自定义字段组件——用彩色 Tag 渲染 priority 字段
- 自定义操作按钮——「新建待办」按钮,点击弹窗填写表单创建记录
完整源码见 @nocobase-example/plugin-custom-table-block-resource。如果你想直接在本地跑起来看效果:
下面从零开始,一步步搭建这个插件。
第一步:创建插件骨架
在仓库根目录执行:
详细说明见 编写第一个插件。
接着启动开发模式,之后修改代码就能热更新——nb init 创建的项目在项目根目录(<app-path>)下执行 nb source dev,自己 clone 的源码仓库在源码根目录下执行 yarn dev。
第二步:定义数据表(服务端)
新建 src/server/collections/todoItems.ts,NocoBase 会自动加载这个目录下的 collection 定义:
跟设置页示例不同,这里不需要手动注册 resource——NocoBase 会为每个 collection 自动生成标准的 CRUD 接口(list、get、create、update、destroy)。

