Files
Home-Vue-Go/README.md
T

275 lines
6.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
## 个人主页 - 动态版本
基于Vue3 + Go的个人主页项目【原项目[Home-Vue](https://github.com/JLinMr/Home-Vue)】支持动态更新配置,无需修改代码即可更新站点信息。
### 技术栈
**前端:**
- Vue3 + Vite
- CSS3 + HTML5 + JavaScript
- Vue Router
- Axios
**后端:**
- Go + Gin
- Ent ORM
- JWT认证
- SQLite数据库
### 功能特性
- ✅ 动态配置站点信息(名称、URL、图标等)
- ✅ 可视化管理界面
- ✅ 支持多种图片格式上传(jpg、png、jpeg、webp、avif等)
- ✅ 联系方式管理(Email、GitHub、支付宝、微信等)
- ✅ JWT认证保护管理接口
- ✅ 数据存储在SQLite,轻量级数据库
- ✅ 支持Linux服务器二进制打包部署
### 项目结构
```
Home-Vue-go/
├── docs/ # 文档目录
├── scripts/ # 构建脚本
├── src/ # 前端源代码
├── internal/ # Go后端代码
└── public/ # 静态资源
```
详细的项目结构说明请查看 [PROJECT_STRUCTURE.md](./docs/PROJECT_STRUCTURE.md)
### 快速开始
#### 1. 环境要求
- Go >= 1.21
- Node.js >= 16.16.0
- npm >= 8.15.0
#### 2. 安装依赖
```bash
# 安装前端依赖
npm install
# 安装Go依赖
go mod download
```
#### 3. 生成 Ent 代码(仅修改 Schema 后)
生成后的 Ent 源码已提交到仓库,普通运行和构建不需要重复生成。只有修改 `internal/ent/schema` 后才运行:
```bash
# 进入ent目录
cd internal/ent
# 生成Ent代码
go generate ./...
# 返回项目根目录
cd ../..
```
**说明:**
- `go generate` 是Go的内置命令,用于运行代码生成工具
- `./...` 表示当前目录及所有子目录
- 这会根据 `schema/` 目录中的定义生成Ent ORM代码
- 生成器使用 `go.mod` 中固定的 Ent 版本,不会使用 `@latest`
#### 4. 运行项目
**开发模式:**
需要打开两个终端窗口:
**终端1 - 启动Go后端:**
```bash
# 在项目根目录运行
go run main.go
```
**终端2 - 启动前端开发服务器:**
```bash
# 在项目根目录运行
npm run dev
```
**说明:**
- `go run main.go` 会编译并运行Go程序
- 后端默认运行在 `http://localhost:1551`
- 前端默认运行在 `http://localhost:1552`
- 首次运行会自动创建 `data/` 目录和数据库
- 可以通过环境变量 `PORT` 修改后端端口(默认1551
**Windows用户注意:** 如果遇到中文乱码,在PowerShell中运行:
```powershell
[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
chcp 65001
```
访问:
- 前端:http://localhost:1552
- 管理界面:http://localhost:1552/admin
- 登录页面:http://localhost:1552/login
**默认管理员账号:**
- 用户名:`admin`
- 密码:`admin123`
⚠️ **重要:** 首次运行后请立即修改默认密码!
#### 5. 构建部署
**构建 Linux 单文件程序:**
```bash
make build-linux
```
**构建 Windows 单文件程序:**
```powershell
make build-windows
```
**构建全部平台:**
```bash
make build
```
该命令会生成 Windows、Linux 和 macOS amd64 可执行文件;需要单独构建某个平台时使用对应的 `make build-windows``make build-linux``make build-darwin`
**构建前端:**
```bash
npm install
npm run build
```
构建完成后:
- Go二进制文件:`./home-vue-go` (Linux) 或 `./home-vue-go.exe` (Windows)
- 前端构建文件:`./dist`
**说明:**
- `go build` 编译Go程序为二进制文件
- SQLite 使用纯 Go 驱动,构建不需要 CGO 或 GCC
- `GOOS=linux GOARCH=amd64` 指定目标平台和架构
- `-o` 指定输出文件名
### 部署说明
1. **上传文件到服务器:**
- 上传 `home-vue-go` 二进制文件
- 上传 `dist` 目录(前端构建文件)
2. **运行二进制文件:**
```bash
./home-vue-go
```
3. **数据存储:**
- 数据库文件:`./data/home.db`
- 上传的图片:`./data/uploads/`
- 所有数据存储在二进制文件同级目录的 `data` 文件夹中
4. **环境变量(可选):**
```bash
export PORT=1551 # 服务端口,默认1551
export JWT_SECRET=your-secret-key # JWT密钥,建议修改
```
### 管理界面使用
1. 访问 `/admin` 进入管理界面
2. 使用默认账号登录
3. 在管理界面中可以:
- **站点配置**:修改站点名称、URL、图标、描述等
- **站点管理**:添加、编辑、删除站点链接
- **联系方式管理**:管理Email、GitHub、支付宝、微信等联系方式
### 数据迁移
如果你之前使用的是静态版本(使用JSON配置文件),可以:
1. 启动新版本服务
2. 登录管理界面
3. 手动导入原有数据,或使用API批量导入
### API文档
#### 公开API(无需认证)
- `GET /api/sites` - 获取站点列表
- `GET /api/contacts` - 获取联系方式列表
- `GET /api/config` - 获取站点配置
#### 管理API(需要JWT认证)
- `POST /api/auth/login` - 登录获取token
- `GET /api/admin/sites` - 获取站点列表(管理)
- `POST /api/admin/sites` - 创建站点
- `PUT /api/admin/sites/:id` - 更新站点
- `DELETE /api/admin/sites/:id` - 删除站点
- `GET /api/admin/contacts` - 获取联系方式列表(管理)
- `POST /api/admin/contacts` - 创建联系方式
- `PUT /api/admin/contacts/:id` - 更新联系方式
- `DELETE /api/admin/contacts/:id` - 删除联系方式
- `GET /api/admin/config` - 获取站点配置(管理)
- `PUT /api/admin/config` - 更新站点配置
- `POST /api/admin/upload` - 上传图片文件
### 注意事项
1. **Email格式验证**Email类型的联系方式URL必须是 `mailto:` 格式(如:`mailto:i@bsgun.cn`
2. **图片上传**:支持 jpg、jpeg、png、gif、webp、avif、svg、bmp 格式
3. **数据库安全**:SQLite数据库文件存储在服务器本地,不对外暴露,防止数据库注入
4. **JWT密钥**:生产环境请务必修改JWT_SECRET环境变量
5. **默认密码**:首次部署后请立即修改管理员密码
### 开发命令
**Go相关命令:**
```bash
# 更新依赖
go mod tidy
# 下载依赖
go mod download
# 生成Ent代码
cd internal/ent && go generate ./... && cd ../..
# 运行后端(开发模式)
go run main.go
# 构建后端(当前平台)
CGO_ENABLED=0 go build -o home-vue-go .
# 构建后端(Linux
CGO_ENABLED=0 GOOS=linux GOARCH=amd64 go build -o home-vue-go .
# 查看Go版本
go version
# 查看模块信息
go mod graph
```
**前端相关命令:**
```bash
# 安装依赖
npm install
# 开发模式
npm run dev
# 构建生产版本
npm run build
# 预览构建结果
npm run preview
```
### 许可证
MIT License