# vue3-admin-template **Repository Path**: luo-binger/vue3-admin-template ## Basic Information - **Project Name**: vue3-admin-template - **Description**: vue3+vite+pinia+ts+element-plus+router+mock工程化模板 - **Primary Language**: Unknown - **License**: Not specified - **Default Branch**: master - **Homepage**: None - **GVP Project**: No ## Statistics - **Stars**: 1 - **Forks**: 0 - **Created**: 2025-11-28 - **Last Updated**: 2025-11-29 ## Categories & Tags **Categories**: Uncategorized **Tags**: None ## README # Vue3 + Vite + Element Plus 企业级中后台开发模板

## 📖 项目简介 这是一个开箱即用的 Vue3 企业级开发脚手架。 为了提供最稳定的开发体验,本项目采用 **Element Plus 全局全量导入** 策略,避免了按需引入可能导致的样式丢失或 TypeScript 类型报错问题。同时保留了 Vue 核心 API 的自动导入,兼顾了开发效率与稳定性。 ### ✨ 核心特性 - **稳定技术栈**:Vue3 Setup + Vite5 + TypeScript + Pinia。 - **UI 框架 (全局导入)**:Element Plus 完整引入,无需手动注册组件,样式完全兼容。 - **开发体验**: - **AutoImport**:自动导入 Vue/Router/Pinia 核心 API (如 `ref`, `computed`)。 - **Path Alias**:已配置 `@` 指向 `src` 目录。 - **Sass**:开箱即用的 CSS 预处理器支持。 - **数据模拟**:集成 `vite-plugin-mock`,本地开发无需等待后端接口。 --- ## 🚀 快速上手 (使用 Git Clone) ### 1. 拉取项目并初始化 请将 `[MyProjectName]` 替换为你实际的项目名称: ```bash # 1. 克隆模板仓库 git clone https://gitee.com/luo-binger/vue3-admin-template.git [MyProjectName] # 2. 进入项目目录 cd [MyProjectName] # 3. [关键] 切断与模板仓库的关联,重新初始化 Git rm -rf .git # Windows CMD 用户请使用: rmdir /s /q .git git init git add . git commit -m "feat: init project" ``` ### 2. 安装依赖 推荐使用 npm 安装。 *(注:添加 `--legacy-peer-deps` 是为了防止部分 Mac 环境下的版本冲突警告)* ```bash npm install --legacy-peer-deps ``` ### 3. 启动项目 ```bash npm run dev ``` 启动成功后访问:`http://localhost:5173` --- ## 📂 目录结构 ```text ├── mock/ # Mock 数据配置 ├── public/ # 静态资源 ├── src/ │ ├── assets/ # 项目资源 (图片/全局样式) │ ├── components/ # 公共组件 (src/components 下的组件会自动注册) │ ├── router/ # 路由配置 │ ├── store/ # Pinia 状态管理 │ ├── views/ # 页面文件 │ ├── App.vue # 根组件 │ ├── main.ts # 入口文件 (Element Plus 在此全局注册) │ └── vite-env.d.ts # Vite 类型声明 ├── index.html # HTML 模板 ├── package.json # 依赖配置 ├── tsconfig.json # TypeScript 配置 └── vite.config.ts # Vite 配置 (Vue自动导入/Mock配置) ``` --- ## 🧩 开发规范与指南 ### 1. Element Plus 使用说明 (全局导入) ✅ 本项目已在 `main.ts` 中引入了完整的 Element Plus。 * **组件 (Component)**: **无需 Import**,直接在 template 中使用。 ```html 按钮 ``` * **反馈 API (Message/Notification)**: **必须手动 Import**。 ```typescript import { ElMessage, ElMessageBox } from 'element-plus' const showMsg = () => { ElMessage.success('操作成功') } ``` ### 2. Vue 核心 API 自动导入 无需在每个 `.vue` 文件中引入 Vue 的核心 API。 * **支持列表**: `ref`, `reactive`, `computed`, `watch`, `onMounted`, `useRouter`, `useRoute` 等。 * **使用方式**: 直接用即可。 ### 3. Pinia Store 开发规范 ⚠️ 在 `src/store` 下编写 `.ts` 文件时,为了避免 TypeScript 环境下自动导入偶发失效导致**响应式丢失**,**请务必手动引入 `ref`**。 ```typescript // src/store/user.ts import { defineStore } from 'pinia' import { ref } from 'vue' // 👈 强烈建议:在 .ts 文件中手动引入 ref export const useUserStore = defineStore('user', () => { const token = ref('') return { token } }) ``` ### 4. Mock 数据 在 `mock/` 目录下创建 `.ts` 文件即可自动拦截请求。 ```typescript export default [ { url: '/api/test', method: 'get', response: () => ({ code: 200, data: 'Mock Data' }) } ] ``` --- ## ❓ 常见问题排查 (Troubleshooting) **Q1: `npm install` 报错 `EACCES: permission denied`** > **原因**: npm 缓存文件夹权限被 root 用户占用。 > **解决**: 运行 `sudo chown -R 501:20 "$HOME/.npm"` 修复权限。 **Q2: 为什么 `ElMessage` 报错 `is not defined`?** > **原因**: 全局导入模式下,组件是自动注册的,但 API 方法不是。 > **解决**: 请在文件头部添加 `import { ElMessage } from 'element-plus'`。 **Q3: 修改了 Store 里的数据,但页面没更新?** > **原因**: `ref` 在 `.ts` 文件中未被正确识别。 > **解决**: 检查 store 文件是否手动引入了 `import { ref } from 'vue'`。 --- ## 📄 License MIT