# Admin Plus（Vue3 企业级开发模板）

面向公司项目的前端模板与基础库：内置 `Vue 3 + Vue CLI 5 + TypeScript + Pinia + Vue Router + Element Plus`，并集成 Mock、代码生成（Plop）、多套布局组件与常用工具链，支持在此基础上快速裁剪与复用。

> 本仓库同时提供面向 AI 的结构说明与模块索引：见 [AI-Coding/README.md](AI-Coding/README.md)。

---

## 亮点

- **开箱即用**：工程化配置齐全（TS/ESLint/Prettier/Stylelint/Unit Test）。
- **可扩展的 UI/布局体系**：`library/layouts/`、`library/components/` 内置多布局与业务型基础组件。
- **Mock 一体化**：开发环境通过 `devServer.setupMiddlewares` 自动挂载 `mock/` 路由。
- **现代依赖栈**：`Element Plus` + `@element-plus/icons-vue`，并内置图标组件 `vab-icons`。
- **可生成代码**：通过 `plop` 快速生成页面/CRUD/组件/mock&api。

---

## 环境要求

- Node.js：建议 **16/18/20 LTS**（与 Vue CLI 5 兼容）
- 包管理器：推荐 `pnpm`（项目脚本也提供 `npm` 用法）

---

## 快速开始

### 1）安装依赖

```powershell
cd d:\project\Web_Template_Vue3_Dev
pnpm i
```

如你使用 npm：

```powershell
cd d:\project\Web_Template_Vue3_Dev
npm i
```

### 2）启动开发环境

```powershell
pnpm run serve
```

### 3）构建

```powershell
pnpm run build
```

### 4）单元测试 / 代码质量

```powershell
pnpm run test:unit
pnpm run lint
pnpm run lint:eslint
pnpm run lint:prettier
pnpm run lint:stylelint
```

---

## 常用脚本（scripts）

来自 `package.json`：

- **`serve`**：启动开发服务器（本地 Mock 会自动挂载）。
- **`build`**：生产构建。
- **`build:compress` / `compress`**：构建后压缩产物（`scripts/compress.js`）。
- **`build:website`**：站点构建（使用 `VAB_VARIABLE=website` + 压缩）。
- **`test:unit`**：单元测试。
- **`lint`**：Vue CLI ESLint。
- **`lint:eslint` / `lint:prettier` / `lint:stylelint`**：更精细的格式化与风格修复。
- **`template`**：启动 `plop` 代码生成。

---

## 项目结构（速览）

> 更完整、可供 AI 检索复用的索引见 [AI-Coding/README.md](AI-Coding/README.md)。

```text
src/                 应用主代码（入口、路由、状态、国际化、业务页面）
library/             模板基础库（全局样式、插件集合、构建扩展等）
library/components/  可复用基础组件（Vab* 体系）
library/layouts/     多套布局（含主 Layout 入口）
mock/                本地 Mock 服务（devServer 中间件挂载）
types/               全局类型声明与业务类型
tests/unit/          单元测试
scripts/             构建后处理脚本（如压缩）
public/              静态资源与 HTML 模板
```

---

## 关键约定与入口

### 应用入口

- `src/main.ts`
	- 创建应用并挂载：`createApp(App)`
	- 初始化顺序：`setupVab` → `setupI18n` → `setupStore` → `setupRouter`
	- 生产环境可自动启用 Mock：当 `baseURL` 不是外链地址时（见 `src/main.ts` 的判断）

### 路由

- `src/router/index.ts`
	- `constantRoutes`：如登录/注册/404 等基础路由
	- `asyncRoutes`：业务路由（包含 `Layout` 作为壳）

### 状态管理

- `src/store/index.ts`：Pinia 初始化与注入。

### 国际化

- `src/i18n/index.ts`
	- `createI18n({ legacy:false })`
	- 当前语言读取自 `useSettingsStore(pinia)`

### Mock

- `mock/index.js`
	- 挂载到开发服务器中间件（在 `vue.config.js` 的 `devServer.setupMiddlewares`）
	- 基于 `mockjs` 返回数据，并支持文件变更热更新

---

## 别名（Alias）

来自 `vue.config.js` / `tsconfig.json`：

- `@` → `src`
- `~` → 项目根目录
- `/#` → `types`
- `@vab` → `library`
- `@gp` → `library/plugins/vab`

---

## 代码生成（Plop）

项目提供 `plop` 生成器（见 `plopfile.js`）：

- `view`：页面
- `curd`：CRUD
- `component`：组件
- `mock&api`：Mock 与 API 片段

运行：

```powershell
pnpm run template
```

---

## 贡献与团队协作建议

- 建议以“业务模块”为单位在 `src/views/` 组织页面。
- API 按域拆分在 `src/api/`，与 `mock/controller/` 保持同名与路径一致，方便对照。
- 公共能力优先沉淀在 `library/`（全局插件/样式/构建扩展）与 `library/components/`（可视组件）。
