Files
database_render/upgrade.md
2025-08-07 20:03:53 +08:00

4.4 KiB
Raw Blame History

自定义模板系统规范 v2.0

系统架构(三层分离)

1. 布局模板(固定层)

  • 作用:提供页面基础框架,包括头部、导航、底部等
  • 特性:系统内置,不可修改,所有页面共享
  • 路径web/templates/builtin/layout.html
  • 职责:确保品牌一致性和基础用户体验

2. 列表模板(可扩展层)

  • 作用:定义数据列表的展示方式
  • 支持类型
    • list:传统表格视图
    • card:卡片式网格视图
    • timeline:时间轴视图
  • 自定义路径web/templates/custom/{table_name}/
  • 后备机制:未找到自定义模板时使用系统默认

3. 字段模板(可扩展层)

  • 作用:控制单个字段的渲染方式
  • 内置渲染器
    • raw:原始文本
    • markdownMarkdown 渲染
    • time:时间格式化
    • tag:标签样式
    • category:分类显示
  • 自定义路径web/templates/custom/{table_name}/field/

数据流与渲染机制

后端职责

  • 提供标准化 JSON API 接口
  • 不包含任何模板渲染逻辑
  • 支持分页、搜索、排序参数
GET /api/data/{table_alias}?page=1&per_page=20&search=keyword&sort=created_at&order=desc

前端职责

  • 纯前端模板渲染(无服务端渲染)
  • AJAX 获取数据后动态渲染
  • 支持模板缓存和热重载

渲染流程

用户请求 → 加载布局模板 → 加载列表模板 → 加载字段模板 → AJAX获取数据 → 前端渲染

配置规范

YAML 配置扩展

templates:
  custom_path: "./web/templates/custom"
  cache_enabled: true
  hot_reload: false # 开发环境可开启

tables:
  - name: "articles"
    template: "card" # 可选:指定默认模板
    custom_templates:
      list: "custom/articles/list.html"
      fields:
        content: "custom/articles/field/markdown.html"

文件结构规范

web/templates/
├── builtin/              # 系统内置(只读)
│   ├── layout.html       # 基础布局
│   ├── list.html         # 默认列表
│   └── field/            # 默认字段渲染器
├── custom/               # 用户自定义
│   └── {table_name}/
│       ├── list.html     # 列表模板
│       ├── card.html     # 卡片模板
│       └── field/
│           ├── markdown.html
│           └── tag.html

约束条件

技术约束

  • 模板必须继承基础布局
  • 仅支持前端渲染,无服务端逻辑
  • 模板文件名必须符合规范
  • 不支持动态模板编译(安全考虑)

兼容性约束

  • 自定义模板需兼容系统 CSS 框架TailwindCSS
  • 必须保持响应式设计
  • 支持 JavaScript API 接口规范

功能变更说明

已移除功能

  • 表格/卡片模式切换功能
  • 数据导出功能
  • 服务端模板渲染
  • 动态表格模式切换

新增功能

  • 自定义列表模板支持
  • 自定义字段渲染器
  • 模板热重载(开发环境)
  • 模板版本管理
  • 多级模板继承

实施里程碑

Phase 1基础架构Week 1-2

  • 建立三层模板架构
  • 实现基础布局模板
  • 创建文件结构规范
  • 添加模板验证机制

Phase 2模板引擎Week 3-4

  • 实现模板加载系统
  • 建立模板继承机制
  • 添加错误处理和回退
  • 实现模板缓存

Phase 3前端集成Week 5-6

  • 完成 AJAX 数据获取
  • 实现动态模板渲染
  • 添加模板切换 UI
  • 优化加载性能

Phase 4配置系统Week 7-8

  • 扩展 YAML 配置支持
  • 添加模板热重载
  • 实现版本管理
  • 编写开发文档

开发规范

模板开发

<!-- 自定义列表模板示例 -->
{{template "layout" .}} {{define "content"}}
<div class="custom-list">
  {{range .Data}}
  <div class="item">{{template "field" dict "Value" .Title "Type" "raw"}}</div>
  {{end}}
</div>
{{end}}

JavaScript API

// 模板系统API
TemplateSystem.load(tableName, templateType);
TemplateSystem.render(data, template);
TemplateSystem.reloadCache();

迁移指南

从旧版本迁移

  1. 移除所有服务端模板渲染代码
  2. 将现有模板迁移到新文件结构
  3. 更新配置文件格式
  4. 测试自定义模板兼容性