# gohtml
**Repository Path**: pear2007/gohtml
## Basic Information
- **Project Name**: gohtml
- **Description**: 一个简单 的 go blog
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2026-04-18
- **Last Updated**: 2026-04-18
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 个人博客系统
## 项目概述
这是一个使用 Go (Gin) 和前端 HTML/CSS/JS 构建的个人博客系统。该系统提供了完整的博客功能,包括文章管理、分类管理、用户认证等。数据存储采用JSON文件方式,无需额外的数据库服务。
## 技术栈
- **后端**: Go (Gin 框架)
- **数据存储**: JSON 文件
- **身份认证**: JWT
- **前端**: HTML, CSS, JavaScript
- **模板引擎**: Go 内置模板引擎
## 功能特性
### 前台功能
- 文章展示
- 文章分类浏览
- 文章搜索
- 分页功能
- 响应式设计
### 后台管理功能
- 用户认证
- 文章管理(增删改查)
- 分类管理
- 仪表盘统计
- 用户管理
## 项目结构
```
blog/
├── cmd/
│ └── server/
│ └── server.go # 服务器启动入口
├── internal/
│ ├── config/
│ │ └── config.go # 配置管理
│ ├── handler/
│ │ └── handler.go # 请求处理器
│ ├── middleware/
│ │ ├── auth.go # 身份认证中间件
│ │ └── logger.go # 日志中间件
│ └── model/
│ ├── post.go # 文章模型
│ ├── category.go # 分类模型
│ ├── tag.go # 标签模型
│ └── user.go # 用户模型
├── pkg/
│ └── database/
│ └── db.go # JSON数据库实现
├── static/
│ ├── css/
│ │ ├── style.css # 前台样式
│ │ └── admin.css # 后台样式
│ ├── js/
│ │ ├── main.js # 前台脚本
│ │ └── admin.js # 后台脚本
│ └── images/ # 图片资源
├── templates/
│ ├── public/ # 前台模板
│ │ ├── index.html # 首页
│ │ ├── posts.html # 文章列表页
│ │ ├── post.html # 文章详情页
│ │ ├── about.html # 关于页
│ │ └── contact.html # 联系页
│ └── admin/ # 后台模板
│ ├── login.html # 登录页
│ ├── dashboard.html # 仪表盘
│ ├── posts.html # 文章管理页
│ └── post_form.html # 文章编辑页
├── go.mod # Go 模块定义
├── go.sum # Go 模块校验和
├── run.bat # Windows启动脚本
└── main.go # 应用入口
```
## 安装与部署
### 环境要求
- Go 1.18 或更高版本
### 安装步骤
1. 克隆项目:
```bash
git clone
cd blog
```
2. 安装依赖:
```bash
go mod tidy
```
3. 配置环境变量:
```bash
export PORT=9090
export DATABASE_URL=data.json
export JWT_SECRET=your-secret-key-change-this
export ENV=production
```
4. 运行应用:
```bash
go run main.go
```
或者在Windows上直接运行:
```bash
run.bat
```
## API 接口
### 前台接口
- `GET /` - 首页
- `GET /posts` - 文章列表
- `GET /post/:id` - 文章详情
- `GET /about` - 关于页面
- `GET /contact` - 联系页面
### 后台接口
- `GET /admin` - 管理员登录页面
- `POST /admin/login` - 登录
- `GET /admin/logout` - 登出
- `GET /admin/dashboard` - 仪表盘
- `GET /admin/posts` - 文章列表
- `GET /admin/posts/new` - 新建文章页面
- `POST /admin/posts` - 创建文章
- `GET /admin/posts/:id/edit` - 编辑文章页面
- `PUT /admin/posts/:id` - 更新文章
- `DELETE /admin/posts/:id` - 删除文章
- `GET /admin/categories` - 分类列表
- `POST /admin/categories` - 创建分类
- `PUT /admin/categories/:id` - 更新分类
- `DELETE /admin/categories/:id` - 删除分类
## 配置说明
### 环境变量
- `PORT` - 应用监听端口,默认 8080
- `DATABASE_URL` - JSON 数据文件路径,默认 data.json
- `JWT_SECRET` - JWT 密钥,默认 "your-secret-key-change-this"
- `ENV` - 环境标识,默认 "development"
## 开发指南
### 添加新功能
1. 在 `internal/model` 中创建数据模型
2. 在 `internal/handler` 中添加处理器函数
3. 在 `internal/middleware` 中添加中间件(如需要)
4. 在 `templates` 中创建视图模板
5. 在 `static` 中添加静态资源
6. 在 `cmd/server/server.go` 中注册路由
### 数据存储
系统使用JSON文件存储数据,自动创建初始数据包括:
- 默认管理员账户 (用户名: admin, 密码: 123456)
- 默认分类 (名称: 默认分类)
### 身份验证
后台管理功能需要身份验证,使用 JWT Token 进行认证。
## 安全考虑
- 使用 JWT 进行身份验证
- XSS 防护(通过 Go 模板转义)
- 密码加密存储(bcrypt)
## 部署建议
1. 生产环境中务必修改 JWT_SECRET
2. 使用反向代理(如 Nginx)处理静态文件
3. 配置 HTTPS
4. 设置适当的日志级别
## 扩展性
系统设计具有良好的扩展性:
- 可轻松添加新的数据模型
- 模块化架构便于功能扩展
- RESTful API 设计便于前后端分离
- JSON数据存储便于备份和迁移
## 贡献
欢迎提交 Issue 和 Pull Request 来改进此项目。
## 许可证
MIT License