<!--
 * @Author: Billy
 * @Date: 2021-07-13 09:00:16
 * @LastEditors: Billy
 * @LastEditTime: 2022-07-04 17:34:25
 * @Description: v2.3.1
-->

## 前端项目目录结构

├─api  // 对后端接口的封装，要客观反映后端接口(无论目录结构还是命名)  
│  ├─Disk  // 分类子文件夹  
│  │  └─_BaseAxios.js // Base Axios  
│  ├─Rbac  // 分类子文件夹  
│  │  └─_BaseAxios.js // Base Axios  
│  ├─_AxiosInterceptors.js  // Axios拦截器  
│  └─_ResponseHelper.js  // 针对服务器返回值的处理方法  
├─assets  // Vue静态资源  
├─biz  // 处于api和views之间的一层，用于处理业务，要做到api层只读写数据，views层基本只做界面展示，而且views层不直接调用api层；api层设计决定权在于后端开发，views层设计决定权在于产品经理及UI，biz层设计决定权在于前端开发；方法名一般以add/del/edit/update/get/find开头；传参原则上只有两类，一类是id或id的集合，一类是对象，注意不要把对象拆散了来传参  
│  └─Disk  // 分类子文件夹(尽量跟views的结构有对应关系，但如果是多个页面共用的biz可以单独归类)  
├─components  // Vue组件  
│  ├─Disk  // 分类子文件夹(按大功能模块划分，尽量跟views的结构有对应关系)  
│  │  └─Recycle  // 分类子子文件夹(按小功能模块划分，尽量跟views的结构有对应关系)  
│  ├─Home  // 分类子文件夹(按大功能模块划分，尽量跟views的结构有对应关系)   
│  └─_Common  // 常用Vue组件，在此进行归类，可在其它Vue组件或Vue页面使用  
│     ├─Drag  // 分类子文件夹  
│     └─Tree  // 分类子文件夹  
├─entity  // 对象实体类，由前端定义，不能照搬后端的定义，其new出来的对象，会在biz层和views层之间流转  
│  ├─Disk  // 分类子文件夹  
│  └─Rbac  // 分类子文件夹  
├─router  
│  ├─_index.js  // 路由入口文件   
│  ├─disk.js  // 路由子分类  
│  └─user-role-auth.js  // 路由子分类   
├─scss  
│  ├─HomeScreen  // scss分类子文件夹  
│  ├─_globals.scss  // 全局scss，除element ui的重设样式，均在本文件编写或引用；在App.vue中引用本文件  
│  ├─_variables.scss  // 常用的scss常量；原则上颜色都必须定义在此  
│  └─element-ui-reset.scss  对element ui的全局级别重设，以适应UI设计；在App.vue中引用本文件
├─storage  // 对localStorage或sessionStorage的操作的封装  
│  └─login-info.js  // 针对登录的storage封装   
├─store  // Vuex  
├─svgicon  // svg图标存放于此
│  └─homescreen  
├─sys  
│  ├─SysCode.js  // 信息码，与后端返回值的code对应  
│  └─SysError.js  // 错误类  
├─util  // 常用工具类的封装(先看有没有合适用的，没有再自行实现)  
├─views  // Vue页面  
│  ├─HomeSubViews  // 业务类子页面  
│  │  ├─Disk  // 子页面分类  
│  │  └─Rbac  // 子页面分类  
│  └─SystemViews  // 管理类子页面  
├─App.vue  // 全局样式记在此文件的style标签
├─const.js  // 全局常量记在此
├─main.js  

## 编码格式
* 习惯性用 ";" 作为语句结尾  
* 单行注释文字前面加一个空格，如：// 注释  
* Vue 组件的 props 必须全部写明注释  
* Vue 组件的 data 必须至少有 50% 写注释  
* Vue 组件的 methods 方法，必须用小驼峰命名法，除了留给父组件调用的方法要用大驼峰命名法  
* 事件回调函数的命名，必须以 on 或 handle 开头；而且同一个文件中，只能全用 on 或全用 handle  
* 事件名，以 全小写 或 全小写+横杠 命名，如：tree-node-selected，并且不能以 on 或 handle 开头  
* 常量名，以 全大写 或 全大写+下划线 命名，如：BASE_URL  
* "枚举型"的常量，以 ENUM 开头  

## 样式规范
* 原则上，所有像素(px)的数值，要么是1，要么是2(极少时候)，要么是4的倍数(即：4px, 8px...16px, 20px...32px 等等)  