区块开发指南
为了便于用户自行调整布局,NeutralPress 提供了丰富的区块(Block)机制,允许开发者创建可复用、可配置的页面片段,用户可以在布局编辑器中来使用。
以下文档面对区块开发者,详细介绍了区块的架构设计、核心 API 以及最佳实践。
文档内容
- 区块在系统中的完整运行过程(配置 -> 解析 -> 渲染)。
- 一个区块必须包含哪些文件(目录结构),以及每个文件负责什么。
definition / schema / fetcher / 组件四个核心 API 的写法和边界。- 如何使用
RowGrid做区块布局编排。 - 如何使用自动发现机制来加载组件。
- 常见错误(尤其是
server-only)的定位方法。
推荐阅读顺序
理解区块
区块就是可配置的页面片段,它由三部分组成:
编辑器写 content,服务端在运行时补齐 runtime,组件只负责渲染 block.content + block.runtime。
区块结构
每个区块都放在 apps/web/src/blocks/collection 目录下的独立文件夹中。一个完整的区块必须包含以下五个文件:
definition.ts决定这个区块是什么能力、如何加载。schema.ts决定用户可以在编辑器中设置哪些字段。fetcher.ts在运行时负责数据获取。例如,查数据库、执行 fetch 请求等。index.tsx决定最终怎么渲染 UI,必须是一个服务器端组件。types.ts定义区块的 TypeScript 类型。
不过,如果有客户端交互需求,可以在 index.tsx 中引入客户端组件。建议客户端组件放在 client 目录下。