外观
框架设计
使用高版本Vue-cli脚手架:使用vue-cli4.0版本以上来初始化项目,保持项目目录简洁明了 参考
项目结构
基于vue-cli2脚手架
text
├─build
| ├─build.js ----------- 生产环境构建代码
| ├─check-version.js ----------- 检查node、npm等版本
| ├─utils.js ----------- 构建工具相关
| ├─vue-loader.conf.js ------- webpack loader配置
| ├─webpack.base.conf.js ------- webpack基础配置
| ├─webpack.dev.conf.js ------- webpack开发环境配置,构建开发本地服务器
| ├─webpack.prod.conf.js ------- webpack生产环境配置
|
├─config
| ├─dev.env.js ----------- 开发环境配置
| ├─index.js ----------- 基础配置
| ├─test.env.js ----------- 测试环境配置
| ├─pre.env.js ----------- 预生产环境配置
| ├─pro.env.js ----------- 生产环境配置
|
├─dist
|
├─node_modules
|
├─src
| ├─assets ----------- 资源
| | ├─iconfont ----------- 字体图标
| | ├─images ----------- 图片
| | ├─back ----------- 背景图片
| | ├─banner ----------- banner图
| | ├─default ----------- 默认图片
| | ├─figure ----------- 配图
| | ├─icon ----------- 图标
| | ├─logo ----------- logo
| | ├─nodata ----------- 无数据图
| | ├─other ----------- 其他图片
| | ├─sass ----------- 样式
| | ├─global.scss ---------- 通用样式
| | ├─icon.scss ---------- 图标样式
| | ├─main.scss ---------- 项目公共样式
| | ├─reset.scss ---------- 初始化样式
| | ├─sass-index.scss ------ 样式输出
| | ├─variable.scss ------- 样式变量
| |
| ├─components ----------- 业务组件
| |
| ├─router ----------- 路由
| |
| ├─request ----------- 请求
| | ├─apis.js ----------- 接口索引
| | ├─index.js ----------- 请求封装、异常处理
| |
| ├─store ----------- vuex数据状态管理(存储全局变量)
| | ├─actions.js ----------- 异步更改状态
| | ├─getters.js ----------- state派生状态
| | ├─index.js ----------- vuex初始化 + vuex-persistedstate数据持久化
| | ├─mutation-types.js -------- 更改状态方法名管理
| | ├─mutation.js ----------- 更改状态
| | ├─state.js ----------- 单一状态树
| |
| ├─utils ----------- 公共方法
| |
| ├─views ----------- 视图
| |
| ├─App.vue
| ├─main.js
|
├─static ----------- 静态文件, 比如一些图片,json数据等
|
├─.babelrc ----------- babel6配置文件,ES6语法编译等配置
├─.editorconfig ----------- 定义代码格式
├─.eslintignore ----------- eslint检测代码忽略的文件(夹)
├─.eslintrc.js ----------- 定义eslint的plugins,extends,rules
├─.gitignore ----------- git上传需要忽略的文件格式
├─.postcsssrc ----------- postcss配置文件
├─package.json ----------- 项目信息、项目依赖管理
├─README.md ----------- 项目文档(简介、运行步骤、注意事项)
├─...
基于vue-cli3脚手架
text
├─dockerfiles ----------- 镜像脚本(主要用于项目部署,jenkins打包+镜像容器部署)
| ├─dist ----------- 项目构建的包
| ├─Dockerfile ----------- 镜像脚本
| ├─run.sh ----------- 运行时脚本,主要用于环境变量配置
|
├─node_modules
|
├─public
| ├─favicon.ico ----------- 浏览器标签图标
| ├─index.html ----------- 页面模板(单页面只有一个,多页面要分别建页面模板)
|
├─src
| ├─assets ----------- 图片、样式等资源
| ├─components ----------- 组件
| ├─plugins ----------- 一些类库的封装,如axios
| ├─router ----------- 路由
| ├─store ----------- vuex数据状态管理(存储全局变量)
| | ├─modules ----------- 数据分模块存储
| | ├─index.js ----------- vuex初始化 + vuex-persistedstate数据持久化
| |
| ├─views ----------- 视图
|
| ├─apis.js ----------- 接口索引
| ├─App.vue
| ├─main.js
| ├─utils.js ----------- 公共方法
|
├─.env.development ----------- 开发环境变量
├─.env.production ----------- 生产环境变量
├─.gitignore ----------- git上传需要忽略的文件格式
├─babel.config.js ----------- babel7配置文件
├─package.json ----------- 项目信息、项目依赖管理
├─README.md ----------- 项目文档(简介、运行步骤、注意事项)
├─vue.config.js ----------- 开发构建配置
├─...
基于vue-cli4脚手架
text
├─dockerfiles ----------- 镜像脚本(主要用于项目部署,jenkins打包+镜像容器部署)
| ├─dist ----------- 项目构建的包
| ├─Dockerfile ----------- 镜像脚本
| ├─run.sh ----------- 运行时脚本,主要用于环境变量配置
|
├─node_modules
|
├─public
| ├─favicon.ico ----------- 浏览器标签图标
| ├─index.html ----------- 页面模板(单页面只有一个,多页面要分别建页面模板)
|
├─src
| ├─api ----------- api接口
| ├─assets ----------- 图片、样式等资源
| ├─components ----------- 组件
| | ├─HelloWorld.vue ----------- HelloWorld 组件
| ├─config ----------- 配置信息
| ├─constants ----------- 常量信息
| ├─directives ----------- 自定义指令
| ├─filters ----------- 过滤器,全局工具
| ├─datas ----------- 模拟数据,临时存放
| ├─lib ----------- 外部引用的插件存放及修改文件
| ├─mock ----------- 模拟接口,临时存放
| ├─plugins ----------- 一些类库的封装,如axios
| ├─router ----------- 路由
| ├─store ----------- vuex数据状态管理(存储全局变量)
| | ├─modules ----------- 数据分模块存储
| | ├─index.js ----------- vuex初始化 + vuex-persistedstate数据持久化
| |
| ├─themes ----------- 自定义样式主题
| ├─views ----------- 视图
| | ├─role ----------- role模块
| | | ├─role-list.vue ----------- role 列表页面
| | | ├─role-add.vue ----------- role 添加页面
| | | ├─role-index.scss ----------- role 样式
| | | ├─components ----------- role 组件文件夹
|
| ├─App.vue
| ├─main.js
| ├─utils.js ----------- 公共方法
|
├─.env.development ----------- 开发环境变量
├─.env.production ----------- 生产环境变量
├─.gitignore ----------- git上传需要忽略的文件格式
├─babel.config.js ----------- babel7配置文件
├─package.json ----------- 项目信息、项目依赖管理
├─README.md ----------- 项目文档(简介、运行步骤、注意事项)
├─vue.config.js ----------- 开发构建配置
├─...
目录介绍
api目录
- 文件、变量命名要与后端保持一致。
- 此目录对应后端 API 接口,按照后端一个
controller
一个api
js 文件。若项目较大时,可以按照业务划分子目录,并与后端保持一致。 api
中的方法名字要与后端api
url 尽量保持语义高度一致性。- 对于
api
中的每个方法要添加注释,注释与后端 swagger文档保持一致。
例子:
js
/**
* 后端url: EmployeeController.java
* /employee/add
* /employee/delete/{id}
* /employee/update
* 前端: employee.js
*/
// 添加员工
addEmployee: (data) => {
return postAxios('/employee/add', data)
},
// 更新员工信息
updateEmployee: (data) => {
return postAxios('/employee/update', data)
},
// 删除员工
deleteEmployee: (employeeId) => {
return postAxios('/employee/delete/' + employeeId)
}
assets目录
assets
为静态资源,里面存放 images
, styles
, icons
等静态资源,静态资源命名格式为 kebab-case
md
assets
|-- icons
|-- images
| |-- background-color.png
| |-- upload-header.png
|-- scripts
|-- styles
components目录
此目录应按照组件进行目录划分,目录命名为KebabCase
,组件命名规则也为 KebabCase
。保持内部组件都有一个文件夹,并且为大驼峰命名。文件夹内有index.vue
,进行内容汇总和输出。
md
components/
|- SvgIcon
|- index.vue
|- svg-handle.vue
views目录
命名要与后端、router
、api
等保持一致; 文件夹和文件都为中划线分隔。其中文件夹尽量为单个单词。和父组件紧密耦合的子组件应该以父组件名作为前缀命名。
- 基础组件文件名为 base 开头,使用完整单词而不是缩写。
md
views/
|- conmon
|- base-button.vue
|- base-table.vue
- 其他组件,尽量为模块或者栏目新建一个目录。除非仅有一个文件,而且无任何关联的js,vue等内容。当有公共内容的时候必须新建conmon文件夹,放置vue等文件
md
views/
|- conmon
|- header.vue 公共头部
|- footer.vue 公共底部
|- role
|-- role-index.vue role首页
|-- role-list.vue role列表页面
|-- role-add.vue role新建页面
|-- index.less role模块样式
|-- components role模块通用组件文件夹
|-- role-header.vue role头部组件
|-- role-modal.vue role弹出框组件
|-- role-update role更新页面文件夹
role-update-index.vue
role-update-list.vue
|-- employee employee模块
|-- behavior-log 行为日志log模块
|-- index.vue 整个项目首页(无任何关联文件的情况)
|-- 404.vue 404页面
- 其如果一个vue项目内必须出现多个用户端,或者相互无任何关联的大模块情况,可以另外和
views
平级新建文件夹,并命名为views
横杠加模块类型或名称。
md
views-mobile/
|- conmon
|- header.vue 公共头部
|- footer.vue 公共底部
|- role
|- role-index.vue role首页
|- role-list.vue role列表页面
constants目录
此目录存放项目所有常量,如果常量在 vue
中使用,请使用 vue-enum
插件(https://www.npmjs.com/package/vue-enum) 目录结构:
md
|constants
|-- index.js
|-- role.js
|-- employee.js
例子: employee.js
javascript
export const EMPLOYEE_STATUS = {
NORMAL: {
value: 1,
desc: '正常'
},
DISABLED: {
value: 1,
desc: '禁用'
}
};
export const EMPLOYEE_ACCOUNT_TYPE = {
QQ: {
value: 1,
desc: 'QQ登录'
},
DINGDING: {
value: 3,
desc: '钉钉登录'
}
};
export default {
EMPLOYEE_STATUS,
EMPLOYEE_ACCOUNT_TYPE
};
router与 store 目录
这两个目录一定要将业务进行拆分,不能放到一个 js
文件里。 router
尽量按照 views
中的结构保持一致 store
按照业务进行拆分不同的 js
文件
上次更新: