0a466a40d3ee6939ae44d57652123e4d5c90f028
年糕博客(art-code)
个人博客系统,前后端分离。内置多套前台页面模板,支持后台一键切换与自定义布局包上传。
功能特性
- 内容管理:文章、分类、专栏、作品、视频、代码片段、标签
- 站点配置:全局设置、首页内容、菜单、SEO 均由后台管理
- 多模板体系:前台页面(首页/博客/作品/关于等全部公开页)可在后台切换模板
classic经典布局(默认)ubuntu-terminalUbuntu 终端风格(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+(表结构随启动自动迁移) |
快速开始
# 后端(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)不可删除、不可改名、不可停用;自定义模板可删除(当前使用中的除外)。
文档
- 模板开发手册:模板体系、终端命令表、URL 深链映射、自定义布局包规范(manifest / layout schema、zip 限制、skin 隔离约定)、后台操作流程与前端扩展指南
Description
Languages
Vue
53%
Go
19.4%
TypeScript
12.8%
HTML
7.7%
CSS
3.8%
Other
3.3%