135 lines
3.4 KiB
Markdown
135 lines
3.4 KiB
Markdown
# Vue3 + Vite 项目
|
||
|
||
一个基于 Vue3、Vite、Element Plus、Pinia、Vue Router 和 Axios 的现代化前端项目模板。
|
||
|
||
## 🚀 特性
|
||
|
||
- ⚡️ **Vite** - 极速的构建工具
|
||
- 🖖 **Vue 3** - 渐进式 JavaScript 框架
|
||
- 🎨 **Element Plus** - 基于 Vue 3 的组件库
|
||
- 🗂 **Vue Router** - 官方路由管理器(WebHash 模式)
|
||
- 📦 **Pinia** - 新一代状态管理
|
||
- 🔗 **Axios** - HTTP 请求库(已封装)
|
||
- 🎯 **Sass** - CSS 预处理器
|
||
- 📁 **规范化目录结构** - views 存放页面,components 存放组件
|
||
- 🔧 **完整配置** - 包含开发和生产环境配置
|
||
|
||
## 📦 安装
|
||
|
||
```bash
|
||
# 安装依赖
|
||
npm install
|
||
|
||
# 启动开发服务器
|
||
npm run dev
|
||
|
||
# 构建生产版本
|
||
npm run build
|
||
|
||
# 预览生产构建
|
||
npm run preview
|
||
```
|
||
|
||
## 📁 项目结构
|
||
|
||
```
|
||
src/
|
||
├── api/ # API 接口
|
||
│ ├── index.js # API 统一导出
|
||
│ └── user.js # 用户相关 API
|
||
├── components/ # 公共组件
|
||
│ └── HelloWorld.vue # 示例组件
|
||
├── router/ # 路由配置
|
||
│ └── index.js # 路由主文件
|
||
├── stores/ # 状态管理
|
||
│ ├── index.js # Pinia 配置
|
||
│ └── user.js # 用户状态
|
||
├── styles/ # 样式文件
|
||
│ ├── index.scss # 主样式文件
|
||
│ ├── reset.scss # 重置样式
|
||
│ └── variables.scss # 样式变量
|
||
├── utils/ # 工具函数
|
||
│ └── request.js # HTTP 请求封装
|
||
├── views/ # 页面组件
|
||
│ ├── Home.vue # 首页
|
||
│ └── About.vue # 关于页面
|
||
├── App.vue # 根组件
|
||
└── main.js # 入口文件
|
||
```
|
||
|
||
## 🔧 配置说明
|
||
|
||
### 环境变量
|
||
|
||
- `.env` - 通用环境变量
|
||
- `.env.development` - 开发环境变量
|
||
- `.env.production` - 生产环境变量
|
||
|
||
### 路由配置
|
||
|
||
项目使用 Vue Router 4,配置为 WebHash 模式,路由文件位于 `src/router/index.js`。
|
||
|
||
### 状态管理
|
||
|
||
使用 Pinia 进行状态管理,store 文件位于 `src/stores/` 目录。
|
||
|
||
### HTTP 请求
|
||
|
||
Axios 已经过封装,包含:
|
||
- 请求/响应拦截器
|
||
- 错误处理
|
||
- Token 自动添加
|
||
- 统一的响应格式处理
|
||
|
||
使用方式:
|
||
```javascript
|
||
import { http } from '@/utils/request'
|
||
|
||
// GET 请求
|
||
const data = await http.get('/api/users')
|
||
|
||
// POST 请求
|
||
const result = await http.post('/api/users', { name: 'John' })
|
||
```
|
||
|
||
### 样式系统
|
||
|
||
- 使用 Sass 作为 CSS 预处理器
|
||
- 已删除所有浏览器默认样式
|
||
- 提供了完整的样式变量和工具类
|
||
- 支持 Element Plus 主题定制
|
||
|
||
## 🎨 组件库
|
||
|
||
项目集成了 Element Plus,所有组件都可以直接使用:
|
||
|
||
```vue
|
||
<template>
|
||
<el-button type="primary">按钮</el-button>
|
||
<el-input v-model="input" placeholder="请输入内容"></el-input>
|
||
</template>
|
||
```
|
||
|
||
## 📝 开发规范
|
||
|
||
1. **页面组件** 放在 `src/views/` 目录
|
||
2. **公共组件** 放在 `src/components/` 目录
|
||
3. **使用 setup 语法糖** 编写组件
|
||
4. **样式使用 Sass** 并遵循 BEM 命名规范
|
||
5. **API 请求** 统一放在 `src/api/` 目录
|
||
6. **状态管理** 按模块划分,放在 `src/stores/` 目录
|
||
|
||
## 🚀 部署
|
||
|
||
```bash
|
||
# 构建生产版本
|
||
npm run build
|
||
|
||
# 构建完成后,dist 目录包含所有静态文件
|
||
# 可以部署到任何静态文件服务器
|
||
```
|
||
|
||
## 📄 许可证
|
||
|
||
MIT License
|