# 年糕博客(art-code) 个人博客系统,前后端分离。内置多套前台页面模板,支持后台一键切换与自定义布局包上传。 ## 功能特性 - 内容管理:文章、分类、专栏、作品、视频、代码片段、标签 - 站点配置:全局设置、首页内容、菜单、SEO 均由后台管理 - **多模板体系**:前台页面(首页/博客/作品/关于等全部公开页)可在后台切换模板 - `classic` 经典布局(默认) - `ubuntu-terminal` Ubuntu 终端风格(`ls` / `cat` / `search` 等命令交互,配色可在终端内自定义并保存) - 自定义布局包(后台上传 zip,JSON 描述区块结构 + 皮肤 CSS) - PPT 演示:文章一键生成 PPT ## 技术栈 | 端 | 技术 | |---|---| | 前端 `client/` | Vue 3 + TypeScript + Vite 6 + Tailwind CSS + lucide-vue-next | | 后端 `server/` | Go + Gin + GORM + MySQL | | 数据库 | MySQL 5.7+(表结构随启动自动迁移) | ## 快速开始 ```bash # 后端(server/) # 1. 复制 .env.example 为 .env 并填写 MySQL 连接 # 2. 启动(数据库迁移在 main.go 启动时自动执行) cd server go run main.go # 监听 :8081 # 前端(client/) cd client pnpm install pnpm dev # 监听 :8888,/api 代理到 8081 ``` 生产构建:`cd client && pnpm build`(产物在 `client/dist/`)。 ## 目录结构 ``` ├── server/ # Go/Gin 后端 │ ├── main.go # 路由注册 + 启动迁移 │ ├── handlers/ # 接口处理器 │ ├── repositories/ # 数据访问 + 表迁移 │ ├── models/ # GORM 模型 │ └── utils/ # 统一响应等 ├── client/ # Vue3 前端 │ ├── src/pages/ # 前台页面(Home/Blog/Works/About…) │ ├── src/pages/admin/ # 后台管理页面 │ ├── src/layouts/ # 模板布局:ClassicLayout / TerminalLayout / CustomLayoutRenderer │ ├── src/terminal/ # 终端模板引擎(命令解析、输出组件) │ ├── src/layouts/blocks/ # 自定义布局渲染引擎(白名单块组件) │ └── src/services/api.ts # API 封装 ├── docs/TEMPLATE-DEV.md # 模板开发手册(必读) └── examples/ # 示例自定义布局包 ``` ## 模板系统概述 前台模板由后台配置项 `site_template`(settings 表)控制,前端 `App.vue` 作为布局分发器按模板渲染: - `classic` → `layouts/ClassicLayout.vue`(现有经典布局) - `ubuntu-terminal` → `layouts/TerminalLayout.vue`(终端交互) - 其他 slug → `layouts/CustomLayoutRenderer.vue`(按布局 JSON 渲染自定义包) **预览不落库**:访问 `/?preview_template=` 可临时预览任意模板,适合后台确认后再切换。 后台入口:系统设置 → 模板管理(上传/启用/设为当前/预览/详情/删除)。 > 内置模板(classic / ubuntu-terminal)不可删除、不可改名、不可停用;自定义模板可删除(当前使用中的除外)。 ## 文档 - **[模板开发手册](docs/TEMPLATE-DEV.md)**:模板体系、终端命令表、URL 深链映射、自定义布局包规范(manifest / layout schema、zip 限制、skin 隔离约定)、后台操作流程与前端扩展指南