Files
tokens-reef/deploy/docs-backup/MODULE_11_FRONTEND.md

137 lines
2.9 KiB
Markdown
Raw Permalink Normal View History

# Sub2API 模块分析报告:前端架构与实现
## 1. 模块概述
### 1.1 模块定位
前端模块是Sub2API的Web管理界面提供用户管理、账号管理、监控面板等功能。前端采用Vue 3框架开发与后端通过RESTful API通信。
### 1.2 技术栈
| 技术 | 版本 |
|------|------|
| Vue | 3.4+ |
| TypeScript | 5.0+ |
| Vite | 5.0+ |
| Pinia | 状态管理 |
| TailwindCSS | UI框架 |
| Axios | HTTP客户端 |
## 2. 代码结构
### 2.1 目录结构
```
frontend/src/
├── api/ # API调用
├── assets/ # 静态资源
├── components/ # 公共组件
├── composables/ # Vue组合式函数
├── layouts/ # 布局组件
├── router/ # 路由配置
├── stores/ # Pinia状态
├── styles/ # 样式文件
├── types/ # TypeScript类型
├── utils/ # 工具函数
└── views/ # 页面组件
```
### 2.2 核心模块
| 模块 | 说明 |
|------|------|
| `api/` | 后端API封装 |
| `stores/` | 全局状态管理 |
| `views/` | 页面组件 |
| `components/` | 可复用组件 |
## 3. 核心功能
### 3.1 状态管理Pinia
```typescript
// stores/user.ts
export const useUserStore = defineStore('user', {
state: () => ({
user: null as User | null,
token: '',
}),
actions: {
async login(email: string, password: string) {
const response = await api.login(email, password)
this.token = response.token
this.user = response.user
},
},
})
```
### 3.2 API封装
```typescript
// api/index.ts
const client = axios.create({
baseURL: import.meta.env.VITE_API_BASE_URL,
})
client.interceptors.request.use((config) => {
const token = useUserStore().token
if (token) {
config.headers.Authorization = `Bearer ${token}`
}
return config
})
```
### 3.3 页面组织
| 页面 | 路由 | 功能 |
|------|------|------|
| 仪表板 | `/dashboard` | 概览统计 |
| 用户管理 | `/users` | 用户CRUD |
| API Key | `/apikeys` | Key管理 |
| 账号管理 | `/accounts` | 上游账号 |
| 分组管理 | `/groups` | 分组配置 |
| 用量统计 | `/usage` | 用量查询 |
| 系统设置 | `/settings` | 系统配置 |
## 4. 构建与部署
### 4.1 构建配置
```yaml
# vite.config.ts
export default defineConfig({
build: {
target: 'es2020',
minify: 'terser',
rollupOptions: {
output: {
manualChunks: {
vendor: ['vue', 'vue-router', 'pinia'],
},
},
},
},
})
```
### 4.2 Docker嵌入
```dockerfile
# 后端构建时嵌入前端
RUN go build -tags embed -o sub2api ./cmd/server
```
## 5. 总结
前端模块特点:
- **现代技术栈**Vue 3 + TypeScript + Vite
- **组件化**:清晰的组件层次
- **状态管理**Pinia统一管理
- **响应式**:支持移动端
---
*文档版本1.0*
*分析基于Sub2API v0.1.104*