1.8 KiB
1.8 KiB
前台积木页面(动态路由)
概念
- 在 网页管理 中创建页面,设置 前台路径(
route_path或默认/{slug})、发布、内容模式。 - HTML:
content为 HTML 字符串,前台用v-html渲染(仅信任后台内容)。 - 积木(builder):
content为 JSON,结构如下,前台按模块渲染并支持入场动画。
动态路由
- 前台启动时请求
GET /api/web/routes,按已发布页面注册 Vue Router。 slug为index的页面不参与动态路由(仍由首页Home.vue+ 首页数据驱动)。- 单页数据:
GET /api/web/page?path=/your-path(site_id可选,默认官网站点)。
积木 JSON 结构
{
"version": 1,
"blocks": [
{
"id": "唯一可选",
"type": "heading",
"props": { "text": "标题", "level": 2 },
"animation": { "enter": "fadeIn", "delay_ms": 0, "duration_ms": 600 }
}
]
}
模块类型 type
| type | props 说明 |
|---|---|
heading |
text, level (1–6) |
text |
text 纯文本;或 html: true 时用 html / text 作为 HTML |
link_list |
items: [{ label, url, target? }] |
button |
text, url, variant: primary | ghost, target? |
html |
html 原始 HTML 片段 |
spacer |
height 像素 |
divider |
无 |
section |
padding, maxWidth, background;children 为子 blocks 数组 |
动画 animation.enter
none|fadeIn|slideUp|slideLeft|zoomIndelay_ms、duration_ms控制延迟与时长(毫秒)
扩展新模块
- 在
web/src/components/blocks/BlockRenderer.vue增加type分支与样式。 - 后台仍通过 JSON 配置
props,无需改库表结构。