前端技术架构设计文档(Vue2+Antd+Sass)
文档信息
项目名称 | 前端系统(基于 Vue2 技术栈) |
---|
技术栈核心 | Vue2 + Ant Design Vue + Sass |
版本号 | V1.0.0 |
技术栈核心 | Vue2 + Ant Design Vue + Sass |
编制日期 | 2025-08-07 |
1. 技术栈选型
1.1 核心技术框架
类别 | 技术选型 | 版本 | 作用说明 |
---|
前端框架 | Vue | 2.6.x | 页面构建与数据驱动核心 |
UI 组件库 | Ant Design | 1.7.x | 提供企业级 UI 组件与交互能力 |
样式预处理器 | Sass/SCSS | 2.6.x | 页面构建与数据驱动核心 |
状态管理 | Vuex | 3.6.x | 全局状态管理 |
路由管理 | Vue Router | 3.5.x | 客户端路由控制与页面跳转 |
网络请求 | Axios | 0.27.x | HTTP |
1.2 工程化工具
工具类别 | 选型工具 | 版本 | 作用说明 |
---|
构建工具 | Webpack | 4.46.x | 模块打包与资源编译 |
包管理 | npm/yarn | 6.x+/1.22.x | 依赖安装与版本管理 |
代码规范 | ESLint + Prettier | 8.x+ | 代码风格检查与自动格式化 |
提交规范 | husky + commitlint | 7.x+ | Git 提交信息校验与规范控制 |
2. 架构分层设计
2.1 整体架构分层
采用 “分层隔离” 设计思想,从用户交互到数据处理逐层封装,每层职责单一:
┌───────────────── 表现层(UI Layer) ─────────────────┐
│ 负责页面渲染与用户交互,包含页面组件、业务组件、通用组件 │
├───────────────── 业务层(Service Layer) ──────────────┤
│ 处理核心业务逻辑,包含状态管理、权限控制、业务服务 │
├───────────────── 数据层(Data Layer) ─────────────────┤
│ 负责数据获取与处理,包含API请求、数据转换、本地存储 │
└───────────────── 基础设施层(Infra Layer) ─────────────┘
│ 提供通用能力支撑,包含工具函数、全局配置、自定义指令等 │
2.2 分层职责详情
层级 | 核心职责 | 包含模块 |
---|
表现层 | 页面展示、用户交互、组件复用 | Pages(页面)、Components(组件) |
业务层 | 业务规则实现、状态流转、权限校验 | Vuex(状态)、Permission(权限) |
数据层 | 接口调用、数据格式转换、本地缓存 | Api(接口)、Storage(存储) |
基础设施层 | 通用工具、全局配置、跨层级能力支撑 | Utils(工具)、Config(配置) |
3. 目录结构规范
按分层架构设计目录,确保文件路径可预测、功能可定位:
src/
├── api/ # 数据层:接口定义与请求封装
│ ├── module1/ # 按业务模块划分(如user、order)
│ └── index.js # 接口出口
├── assets/ # 静态资源(图片、字体、icon)
├── components/ # 表现层:共享组件
│ ├── business/ # 业务组件(如OrderTable、UserForm)
│ └── common/ # 通用组件(如Loading、Empty)
├── config/ # 基础设施层:全局配置
│ ├── env.js # 环境变量(开发/测试/生产)
│ └── theme.js # 主题配置
├── layouts/ # 表现层:布局组件(如MainLayout、BlankLayout)
├── pages/ # 表现层:页面组件(路由对应页面)
│ ├── user/ # 按业务模块划分
│ └── dashboard/
├── router/ # 路由配置
│ ├── index.js # 路由入口
│ ├── routes.js # 路由规则
│ └── guard.js # 路由守卫(权限控制)
├── store/ # 状态管理(Vuex)
│ ├── index.js # store入口
│ └── modules/ # 按模块划分的状态(如user、app)
├── styles/ # 样式资源(Sass)
│ ├── variables.scss # 全局变量(颜色、尺寸等)
│ ├── mixins.scss # 混合宏(通用样式逻辑)
│ └── global.scss # 全局样式
├── utils/ # 基础设施层:工具函数
│ ├── auth.js # 权限相关工具
│ ├── format.js # 数据格式化工具
│ └── validator.js # 校验工具
├── directives/ # 自定义指令(如权限指令v-permission)
├── filters/ # 过滤器(如日期格式化)
└── main.js # 应用入口文件
4. 核心技术实现
4.1 网络请求(Axios 封装)
- 请求拦截:统一添加 Token、设置请求头等
- 响应拦截:统一处理错误(如 401 未授权、500 服务器错误)、提取有效数据
- 接口管理:按业务模块拆分 API,示例:
import request from '@/utils/request'
export function getUserInfo(id) {return request({url: `/user/${id}`,method: 'get'})
}
4.2 状态管理(Vuex)
- 模块化设计:每个业务模块对应一个 Vuex 模块,避免状态混乱
- 状态持久化:使用vuex-persistedstate保存关键状态(如用户信息)到 localStorage
- 示例结构:
const state = {userInfo: null, token: ''
}
const mutations = {setToken(state, token) {state.token = token}
}
const actions = {login({ commit }, data) {return new Promise((resolve) => {api.login(data).then(res => {commit('setToken', res.token)resolve(res)})})}
}
export default { namespaced: true, state, mutations, actions }
4.3 路由管理(Vue Router)
- 动态路由:根据用户权限动态生成可访问路由
- 路由懒加载:减少首屏加载资源,示例:
const routes = [{path: '/user',component: () => import('@/layouts/MainLayout'),children: [{ path: 'list', component: () => import('@/pages/user/list') }]}
]
4.4 样式方案(Sass)
- 变量管理:统一维护主题色、字体、尺寸等变量(variables.scss)
- 混合宏封装:复用通用样式逻辑(如清除浮动、响应式适配)
- BEM 命名规范:避免样式冲突,示例:block__element–modifier
5. 工程化与质量保障
5.1 代码规范
- ESLint 规则:基于eslint-config-vue扩展,禁止未定义变量、强制缩进等
- 提交规范:通过commitlint约束提交信息格式(如feat: 新增用户列表)
- 组件规范:单文件组件(SFC)按、
5.2 构建优化
- 按需加载:Antd 组件按需引入(配合babel-plugin-import)
- 资源压缩:图片、JS、CSS 自动压缩
- 缓存策略:静态资源添加 hash 值,实现长效缓存
5.3 性能优化
- 首屏加载:路由懒加载 + 关键 CSS 内联
- 运行时:使用keep-alive缓存频繁切换组件
- 渲染:避免v-for与v-if同时使用,减少 DOM 操作
6. 安全与权限
6.1 安全防护
- XSS 防护:输入内容过滤、输出编码
- CSRF 防护:请求携带 Token 验证
- 接口安全:超时控制、异常重试机制
6.2 权限控制
- RBAC 模型:基于角色的访问控制(角色→权限→资源)
- 粒度控制:
- 路由级:无权限页面禁止访问
- 按钮级:通过v-permission指令控制按钮显示
7. 扩展与兼容
- 国际化:使用vue-i18n支持多语言切换
- 响应式:适配 PC 端不同屏幕尺寸(1280px+、1920px+)
- 兼容性:支持 Chrome 70+、Edge 80+、Firefox 65+
8. 版本历史
版本号 日期 变更内容 负责人
V1.0.0 2025-08-07 初始版本,完成架构设计文档 开发者