77 lines
3.3 KiB
Markdown
77 lines
3.3 KiB
Markdown
# 年糕博客(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=<slug>` 可临时预览任意模板,适合后台确认后再切换。
|
||
|
||
后台入口:系统设置 → 模板管理(上传/启用/设为当前/预览/详情/删除)。
|
||
|
||
> 内置模板(classic / ubuntu-terminal)不可删除、不可改名、不可停用;自定义模板可删除(当前使用中的除外)。
|
||
|
||
## 文档
|
||
|
||
- **[模板开发手册](docs/TEMPLATE-DEV.md)**:模板体系、终端命令表、URL 深链映射、自定义布局包规范(manifest / layout schema、zip 限制、skin 隔离约定)、后台操作流程与前端扩展指南
|