# vite-vue-admin-template-antd
**Repository Path**: zzginfo/vite-vue-admin-template-antd
## Basic Information
- **Project Name**: vite-vue-admin-template-antd
- **Description**: 项目模板: 管理后台项目模板, 技术栈:vite,vue,ant-design-vue 等为主要技术栈。
- **Primary Language**: Unknown
- **License**: Not specified
- **Default Branch**: master
- **Homepage**: None
- **GVP Project**: No
## Statistics
- **Stars**: 0
- **Forks**: 0
- **Created**: 2025-11-07
- **Last Updated**: 2025-11-08
## Categories & Tags
**Categories**: Uncategorized
**Tags**: None
## README
# 管理后台
基于 Vue 3 + Vite + TypeScript + Tailwind CSS + Ant Design Vue + shadcn-vue 的现代化管理后台模板。
## 技术栈
- **Vue 3.5.0** - 渐进式 JavaScript 框架
- **Vite 5.4.0** - 下一代前端构建工具
- **TypeScript 5.6.0** - JavaScript 的超集,提供类型安全
- **Tailwind CSS 3.4.14** - 实用优先的 CSS 框架(稳定版本)
- **Ant Design Vue 4.2.4** - 企业级 UI 组件库(主要 UI 库)
- **@ant-design/icons-vue 7.0.1** - Ant Design Vue 图标库
- **shadcn-vue 2.3.2** - 可复制粘贴的组件库(辅助 UI 组件)
- **Vue Router 4.4.0** - Vue.js 官方路由管理器
- **Pinia 2.2.0** - Vue 的状态管理库
- **pinia-plugin-persistedstate 2.3.0** - Pinia 持久化插件
- **dayjs 1.11.13** - 轻量级日期处理库
- **Lucide Vue Next** - 美观的图标库
- **Axios 1.13.2** - HTTP 客户端
## 功能特性
- ✅ 现代化的登录页面
- ✅ 响应式布局设计
- ✅ 侧边栏导航(基于 Ant Design Vue Layout)
- ✅ 用户认证和路由守卫
- ✅ 仪表盘首页
- ✅ Ant Design Vue 组件库(主要 UI 组件)
- ✅ shadcn-vue 2.3.2 组件演示页面(辅助 UI 组件)
- ✅ 暗色主题支持(Ant Design Vue + Tailwind CSS)
- ✅ TypeScript 类型安全
- ✅ 🔧 完善的 ESLint + Prettier 代码规范
- ✅ 🔧 Git 提交前自动代码检查(Husky + lint-staged)
- ✅ 🔧 VSCode 开发环境配置
- ✅ 🔒 请求安全机制(防重放攻击、时间戳验证、请求签名)
- ✅ 🔒 CORS 跨域配置
- ✅ 📦 API 服务层封装(统一 API 调用管理)
- ✅ 💾 Pinia 状态持久化(自动同步到 localStorage)
- ✅ 🎯 自定义指令(loading、permission、click-outside、debounce、throttle)
- ✅ 🔑 JWT Token 解析和验证
- ✅ 📋 常量统一管理
## 快速开始
### 环境配置
1. **复制环境变量文件**
```bash
# 复制环境变量示例文件
cp env.example .env.development
cp env.example .env.test
cp env.example .env.production
```
2. **配置环境变量**
根据不同环境修改对应的 `.env.*` 文件:
- `.env.development` - 开发环境配置
- `.env.test` - 测试环境配置
- `.env.production` - 生产环境配置
### 安装依赖
```bash
npm install
```
### 启动开发服务器
```bash
# 开发环境(默认)
npm run dev
# 测试环境模式
npm run dev:test
# 生产环境模式(用于本地测试生产配置)
npm run dev:prod
```
### 构建生产版本
```bash
# 默认构建(生产环境)
npm run build
# 开发环境构建
npm run build:dev
# 测试环境构建
npm run build:test
# 生产环境构建
npm run build:prod
```
### 预览构建结果
```bash
# 预览默认构建
npm run preview
# 预览测试环境构建
npm run preview:test
# 预览生产环境构建
npm run preview:prod
```
### 代码检查和格式化
```bash
# 运行 ESLint 检查并自动修复
npm run lint
# 仅检查 ESLint 错误(不修复)
npm run lint:check
# 运行 Prettier 格式化
npm run format
# 仅检查 Prettier 格式(不修复)
npm run format:check
# 运行 TypeScript 类型检查
npm run type-check
```
### UI 组件库使用
#### Ant Design Vue(主要 UI 库)
项目主要使用 **Ant Design Vue** 作为 UI 组件库,提供了丰富的企业级组件:
```vue
主要按钮
```
**主要特性:**
- 60+ 高质量组件
- 完整的 TypeScript 支持
- 企业级设计语言
- 丰富的主题定制能力
- 完善的文档和示例
**常用组件:**
- Layout(布局):`a-layout`, `a-layout-header`, `a-layout-sider`, `a-layout-content`
- Navigation(导航):`a-menu`, `a-breadcrumb`
- Data Display(数据展示):`a-table`, `a-card`, `a-list`
- Data Entry(数据录入):`a-form`, `a-input`, `a-select`, `a-date-picker`
- Feedback(反馈):`a-message`, `a-notification`, `a-modal`
- 更多组件请参考 [Ant Design Vue 官方文档](https://antdv.com/)
#### shadcn-vue(辅助 UI 组件)
项目同时集成了 **shadcn-vue**,用于提供一些额外的 UI 组件:
```bash
# 添加 shadcn-vue 组件
npm run ui:add button
npm run ui:add card
npm run ui:add table
# 添加新的 v2.3.2 组件
npm run ui:add item
npm run ui:add field
# 初始化 shadcn-vue(如需重新配置)
npm run ui:init
```
**使用场景:**
- 需要高度自定义的组件
- 与 Tailwind CSS 深度集成的组件
- 可复制粘贴的组件代码
## 访问应用
启动成功后,在浏览器中访问:
- **主页**: http://localhost:3000
- **Axios测试页面**: http://localhost:3000/axios-test
## 测试 Axios 集成
1. 访问 http://localhost:3000/axios-test
2. 点击各种测试按钮验证功能:
- GET 请求测试
- POST 请求测试(登录)
- PUT 请求测试
- DELETE 请求测试
- 认证请求测试
- 错误处理测试
- 文件上传测试
- 全部测试
3. 打开浏览器开发者工具 (F12) 查看详细日志
## 默认账户
- 用户名: `admin`
- 密码: `admin123`
## 环境变量配置
### 环境变量说明
| 变量名 | 类型 | 默认值 | 说明 |
|--------|------|--------|------|
| `VITE_APP_TITLE` | string | 管理后台 | 应用标题 |
| `VITE_APP_VERSION` | string | 1.0.0 | 应用版本 |
| `VITE_API_BASE_URL` | string | - | API 基础地址 |
| `VITE_API_TIMEOUT` | number | 30000 | API 超时时间(毫秒) |
| `VITE_APP_MOCK_ENABLED` | boolean | false | 是否启用 Mock 数据 |
| `VITE_APP_DEBUG` | boolean | false | 是否启用调试模式 |
| `VITE_APP_LOG_LEVEL` | string | info | 日志级别 (debug/info/warn/error) |
| `VITE_APP_SENTRY_DSN` | string | - | Sentry 错误监控 DSN |
| `VITE_APP_ANALYTICS_ID` | string | - | 分析工具 ID |
| `VITE_APP_DEVTOOLS` | boolean | false | 是否启用开发工具 |
### 环境配置详情
**开发环境** (默认)
- API地址: http://localhost:3001/api
- Mock模式: 启用
- 调试模式: 启用
- 开发工具: 启用
**测试环境**
- API地址: https://test-api.example.com/api
- Mock模式: 禁用
- 调试模式: 启用
- 开发工具: 启用
**生产环境**
- API地址: https://api.example.com/api
- Mock模式: 禁用
- 调试模式: 禁用
- 开发工具: 禁用
- 错误监控: 启用
## 项目结构
```
src/
├── api/ # API 服务层
│ ├── auth.ts # 认证相关 API
│ ├── user.ts # 用户相关 API
│ ├── types.ts # API 类型定义
│ └── index.ts # API 统一导出
├── assets/ # 静态资源
│ ├── index.css # 全局样式
│ ├── theme.css # 主题样式
│ └── theme.less # Less 主题变量
├── components/ # 通用组件
│ └── ui/ # shadcn-vue UI 组件(辅助组件)
├── config/ # 配置文件
│ ├── env.ts # 环境配置管理
│ └── theme.ts # 主题配置
├── constants/ # 常量定义
│ └── index.ts # 常量统一导出
├── directives/ # 自定义指令
│ ├── loading.ts # 加载指令
│ ├── permission.ts # 权限指令
│ ├── clickOutside.ts # 点击外部指令
│ ├── debounce.ts # 防抖指令
│ ├── throttle.ts # 节流指令
│ └── index.ts # 指令统一导出
├── layouts/ # 布局组件
│ └── MainLayout.vue # 主布局
├── lib/ # 工具库
│ └── utils.ts # 通用工具函数
├── plugins/ # 插件配置
│ └── dayjs.ts # dayjs 配置
├── router/ # 路由配置
│ └── index.ts # 路由定义
├── stores/ # 状态管理
│ ├── auth.ts # 认证状态
│ └── theme.ts # 主题状态
├── types/ # TypeScript 类型定义
│ ├── env.d.ts # 环境变量类型
│ └── vue-shims.d.ts # Vue 类型声明
├── utils/ # 工具函数
│ ├── logger.ts # 日志工具
│ ├── request.ts # HTTP 请求工具
│ ├── env-validator.ts # 环境变量验证
│ ├── security.ts # 安全工具(签名、防重放)
│ ├── jwt.ts # JWT Token 工具
│ └── fix-env.ts # 环境变量修复
├── views/ # 页面组件
│ ├── Login.vue # 登录页
│ ├── Dashboard.vue # 仪表盘
│ ├── Users.vue # 用户管理
│ ├── Settings.vue # 系统设置
│ ├── ComponentDemo.vue # 组件演示
│ ├── AxiosTest.vue # Axios 测试
│ └── NotFound.vue # 404 页面
└── main.ts # 应用入口
```
## 故障排除
### 依赖安装问题
如果遇到依赖安装问题,可以尝试以下方法:
1. **清理缓存并重新安装**
```bash
npm cache clean --force
rm -rf node_modules
rm package-lock.json
npm install
```
2. **使用国内镜像**
```bash
npm config set registry https://registry.npmmirror.com
npm install
```
3. **检查 Node.js 版本**
```bash
node --version # 推荐 Node.js 16+ 版本
npm --version
```
### 端口被占用
如果端口 3000 被占用:
1. **查找占用端口的进程** (Windows)
```cmd
netstat -ano | findstr :3000
```
2. **结束进程** (Windows)
```cmd
taskkill /PID <进程ID> /F
```
3. **或使用其他端口**
```bash
npm run dev -- --port 3001
```
### 其他问题
- 如果路径中包含中文字符,可能会遇到编码问题,建议使用 UTF-8 编码的终端
- 如果仍然遇到问题,请检查控制台错误信息,或尝试在不同的终端中运行命令
- 重启开发服务器:按 `Ctrl+C` 停止,然后重新运行 `npm run dev`
## 项目功能特性
### 已完成的功能
- ✅ Vue 3 + TypeScript + Vite 项目架构
- ✅ Axios HTTP 请求封装
- ✅ 多环境配置管理
- ✅ 用户认证和路由守卫
- ✅ Ant Design Vue 企业级 UI 组件库(主要)
- ✅ shadcn-vue UI 组件库(辅助)
- ✅ Tailwind CSS 样式框架
- ✅ Pinia 状态管理
- ✅ 完整的测试页面
### Axios 集成特性
- ✅ 自动请求/响应拦截器
- ✅ 统一错误处理
- ✅ Token 自动认证
- ✅ Mock 数据支持
- ✅ 文件上传/下载
- ✅ 请求日志记录
- ✅ 请求防重放机制(时间戳 + 签名 + nonce)
- ✅ 自动 401 跳转登录
### 安全特性
- ✅ **请求防重放攻击**:每个请求包含时间戳、nonce 和签名
- ✅ **JWT Token 验证**:自动检查 token 是否过期
- ✅ **CORS 配置**:开发和生产环境 CORS 策略
- ✅ **Token 安全存储**:支持 refresh token 机制
### API 服务层
项目采用统一的 API 服务层封装,所有 API 调用都通过 `src/api/` 目录下的模块进行:
```typescript
// 使用示例
import { authApi, userApi } from '@/api'
// 登录
const response = await authApi.login({ username, password })
// 获取用户列表
const users = await userApi.getList({ page: 1, pageSize: 10 })
```
### 自定义指令
项目提供了多个实用的自定义指令:
- **v-loading**:显示加载状态
```vue
内容
```
- **v-permission**:权限控制
```vue
```
- **v-click-outside**:点击外部触发
```vue
菜单
```
- **v-debounce**:防抖处理
```vue
```
- **v-throttle**:节流处理
```vue
滚动区域
```
### 状态管理
使用 Pinia 进行状态管理,并集成了持久化插件:
```typescript
// stores/auth.ts
export const useAuthStore = defineStore('auth', () => {
// ... 状态定义
}, {
persist: {
key: 'user',
storage: localStorage,
paths: ['user', 'token'],
},
})
```
状态会自动同步到 localStorage,页面刷新后自动恢复。
### 常量管理
所有常量统一在 `src/constants/index.ts` 中定义:
- API 端点:`API_ENDPOINTS`
- 存储键名:`STORAGE_KEYS`
- 请求配置:`REQUEST_CONFIG`
- HTTP 状态码:`HTTP_STATUS`
- 错误消息:`ERROR_MESSAGES`
- 路由名称:`ROUTE_NAMES`
- 菜单配置:`MENU_CONFIG`
### JWT Token 处理
项目提供了完整的 JWT Token 工具函数:
```typescript
import { parseJwt, isTokenExpired, extractUserFromToken } from '@/utils/jwt'
// 解析 token
const payload = parseJwt(token)
// 检查是否过期
if (isTokenExpired(token)) {
// token 已过期
}
// 提取用户信息
const user = extractUserFromToken(token)
```
认证状态初始化时会自动:
1. 检查 token 是否过期
2. 尝试从 token 中解析用户信息
3. 如果 token 信息不完整,调用 API 获取用户信息
## UI 组件库说明
### Ant Design Vue(主要 UI 库)
项目主要使用 **Ant Design Vue 4.2.4** 作为 UI 组件库,这是企业级 Vue UI 组件库,提供了:
- **60+ 高质量组件**:覆盖表单、表格、布局、导航等所有常用场景
- **完整的 TypeScript 支持**:所有组件都有完整的类型定义
- **企业级设计语言**:遵循 Ant Design 设计规范
- **丰富的主题定制**:支持全局主题配置和暗色模式
- **完善的文档**:[官方文档](https://antdv.com/)
**在项目中的使用:**
- 布局组件(Layout、Menu)用于主框架
- 表单组件用于数据录入
- 表格组件用于数据展示
- 反馈组件用于用户交互
### shadcn-vue(辅助 UI 组件)
项目同时集成了 **shadcn-vue 2.3.2**,用于提供:
- **可复制粘贴的组件**:组件代码直接在你的项目中,可完全自定义
- **Tailwind CSS 深度集成**:与 Tailwind CSS 完美配合
- **轻量级组件**:按需添加,不增加额外负担
**使用场景:**
- 需要高度自定义的组件
- 与 Tailwind CSS 深度集成的场景
- 补充 Ant Design Vue 没有的组件
### 样式方案
- **Ant Design Vue**:提供组件样式和主题系统
- **Tailwind CSS**:提供工具类样式和自定义样式
- **Less**:用于 Ant Design Vue 主题变量定制
两者可以完美配合使用,互不冲突。
## 开发说明
本项目使用了最新的前端技术栈,提供了完整的管理后台解决方案:
- **主要 UI 库**:Ant Design Vue(企业级组件)
- **辅助 UI 库**:shadcn-vue(可自定义组件)
- **样式方案**:Tailwind CSS + Ant Design Vue Less 变量
- **所有组件都是响应式的**,支持现代浏览器
- **完整的 TypeScript 支持**,提供类型安全