在正式开始项目代码之前,阅读vue-element-template的项目结构和风格指南,对之后写出条理清晰,易于阅读的代码很有帮助,强烈建议阅读一遍,做到心里有底。
目录结构(v4.0+)
特别注意mock、api、view,对于简单的开发,也是始终会用到的。
mock请参考:https://panjiachen.gitee.io/vue-element-admin-site/zh/guide/essentials/mock-api.html#swagger
├── build # 构建相关
├── mock # 项目mock 模拟数据
├── public # 静态资源
│ │── favicon.ico # favicon图标
│ └── index.html # html模板
├── src # 源代码
│ ├── api # 所有请求
│ ├── assets # 主题 字体等静态资源
│ ├── components # 全局公用组件
│ ├── directive # 全局指令
│ ├── icons # 项目所有 svg icons
│ ├── layout # 全局 layout
│ ├── router # 路由
│ ├── store # 全局 store管理
│ ├── styles # 全局样式
│ ├── utils # 全局公用方法
│ ├── views # views 所有页面
│ ├── App.vue # 入口页面
│ ├── main.js # 入口文件 加载组件 初始化等
│ └── permission.js # 权限管理
│ └── setting.js # 设置管理
├── tests # 测试
├── .env.xxx # 环境变量配置
├── .eslintrc.js # eslint 配置项
├── .babelrc # babel-loader 配置
├── .travis.yml # 自动化CI配置
├── vue.config.js # vue-cli 配置
├── postcss.config.js # postcss 配置
└── package.json # package.json
风格指南
因为vue-element-template配置了ESlint,所以按照ESlint的风格来写,会让一切更舒心。
默认情况下使用了最严格的plugin:vue/recommended来校验代码,所以,如果不按照风格指南来书写代码,就会出现一堆堆的报错提示,包括但不限于双引号",分号:,空格 … 这让人极其不爽。
你可以修改撑不那么严格的方式,也可以取消使用ESlint, it’s up to you!
大部分规则配置在了eslint-plugin-vue之中,ESlint具体说明参考:
https://panjiachen.gitee.io/vue-element-admin-site/zh/guide/advanced/eslint.html
// 风格指南
Component
所有的Component文件都是以大写开头 (PascalCase),这也是官方所推荐的。
但除了 index.vue。
例子:
@/src/components/BackToTop/index.vue
@/src/components/Charts/Line.vue
@/src/views/example/components/Button.vue
----------------------------------------
# JS 文件
所有的.js文件都遵循横线连接 (kebab-case)。
例子:
@/src/utils/open-window.js
@/src/views/svg-icons/require-icons.js
@/src/components/MarkdownEditor/default-options.js
----------------------------------------
# Views
在views文件下,代表路由的.vue文件都使用横线连接 (kebab-case),代表路由的文件夹也是使用同样的规则。
例子:
@/src/views/svg-icons/index.vue
@/src/views/svg-icons/require-icons.js
使用横线连接 (kebab-case)来命名views主要是出于以下几个考虑。
- 横线连接 (kebab-case) 也是官方推荐的命名规范之一 文档
- views下的.vue文件代表的是一个路由,所以它需要和component进行区分(component 都是大写开头)
- 页面的url也都是横线连接的,比如https://www.xxx.admin/export-excel,所以路由对应的view应该要保持统一
- 没有大小写敏感问题