# 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