如何用 Vue3 + Vite + Ant Design Vue + Axios + Pinia 搭建脚手架?
- 前端
- 2天前
- 8热度
- 0评论
如何用Vue3 + Vite + Ant Design Vue + Axios + Pinia搭建企业级脚手架?
一、为什么选择这个技术栈组合?
在2023年前端生态中,Vue3的组合式API提供了更灵活的逻辑复用能力,配合Vite的秒级热更新能显著提升开发体验。Ant Design Vue作为企业级UI库,提供60+高质量组件,而Axios的拦截器机制与Pinia的状态管理组合,可构建出可维护性极高的前端架构。
二、环境搭建与项目初始化
2.1 创建Vite项目
npm create vite@latest my-project --template vue-ts
选择Vue+TypeScript模板,安装完成后执行npm install初始化依赖
2.2 核心依赖安装
npm install ant-design-vue axios @pinia/vue @pinia/core
三、集成Ant Design Vue
3.1 按需加载最佳实践
使用unplugin-vue-components实现自动按需加载:
// vite.config.ts
import Components from 'unplugin-vue-components/vite'
import { AntDesignVueResolver } from 'unplugin-vue-components/resolvers'
export default defineConfig({
plugins: [
Components({
resolvers: [AntDesignVueResolver()],
}),
]
})
这种方式相比手动引入优势在于:
- 自动注册组件,无需手动import
- 样式自动导入,避免样式丢失
- 打包时自动tree-shaking
四、配置Axios实例
4.1 创建全局请求实例
// src/utils/request.ts
import axios from 'axios'
const service = axios.create({
baseURL: import.meta.env.VITE_API_BASE,
timeout: 10000
})
// 请求拦截
service.interceptors.request.use(config => {
config.headers.Authorization = localStorage.getItem('token')
return config
})
// 响应拦截
service.interceptors.response.use(
response => response.data,
error => Promise.reject(error)
)
export default service
五、Pinia状态管理配置
5.1 创建Store实例
// src/store/user.ts
import { defineStore } from 'pinia'
export const useUserStore = defineStore('user', {
state: () => ({
token: localStorage.getItem('token') || '',
userInfo: null
}),
actions: {
async login(credentials) {
const { data } = await axios.post('/api/login', credentials)
this.token = data.token
localStorage.setItem('token', data.token)
}
}
})
5.2 主文件注册
// main.ts
import { createPinia } from 'pinia'
const app = createApp(App)
app.use(createPinia())
六、架构整合与优化
6.1 模块化结构规范
src/
├── api/ // 接口模块
├── assets/
├── components/ // 通用组件
├── router/
├── store/ // Pinia模块
├── utils/ // 工具类
└── views/ // 页面组件
6.2 环境变量配置
// .env.development
VITE_API_BASE=http://localhost:3000/api
// .env.production
VITE_API_BASE=https://api.example.com
七、最佳实践与避坑指南
- 按需加载陷阱:复杂组件如DatePicker可能需要额外引入样式文件
- 类型声明处理:在env.d.ts中声明AntDesign组件类型
- 代码分割策略:使用Vite的rollupOptions配置chunk分割规则
- 移动端适配:配合postcss-px-to-viewport实现响应式布局
通过这套技术组合,开发者可以快速搭建出高性能、易维护的前端脚手架。实际项目中可根据需求集成其他能力模块,如:
- 通过vue-router实现动态路由加载
- 使用Vite插件实现Mock API
- 集成Sentry进行错误监控
项目源码参考:Vue3企业级脚手架示例