Files
nl-blogs/README.md

77 lines
3.3 KiB
Markdown
Raw Normal View History

2026-08-24 13:06:04 +08:00
# 年糕博客art-code
个人博客系统,前后端分离。内置多套前台页面模板,支持后台一键切换与自定义布局包上传。
## 功能特性
- 内容管理:文章、分类、专栏、作品、视频、代码片段、标签
- 站点配置全局设置、首页内容、菜单、SEO 均由后台管理
- **多模板体系**:前台页面(首页/博客/作品/关于等全部公开页)可在后台切换模板
- `classic` 经典布局(默认)
- `ubuntu-terminal` Ubuntu 终端风格(`ls` / `cat` / `search` 等命令交互,配色可在终端内自定义并保存)
- 自定义布局包(后台上传 zipJSON 描述区块结构 + 皮肤 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 隔离约定)、后台操作流程与前端扩展指南