VUE-目录规范-前端

153 阅读8分钟

1 目录规范

文件夹的命名规范遵循《命名规范》中的目录命名规范,全部采用小写的 kebab-case 命名,有复数结构时采用复数命名,缩写不使用复数。
同时强调,不建议编造或滥用缩写,不建议在文件夹名称中出现下划线。

// bad 不推荐
script/
├ Configs/
source_code/
├ comp/
├─ mybtns/
├ pageview/
├ _UTILS/

// good 推荐
scripts/
├ config/
src/
├ components/
├─ my-buttons/
├ views/
├ utils/

对于规模较小的前端项目,我们推荐的目录文件组织方式如下

/** 针对规模较小的前端项目 */
configs/                                存放非固定路径的配置信息文件,部分配置文件必须保持在项目根目录下
├ tsconfig.*.json                      【示例】TypeScript配置文件,可能存在多份
├ tslint.*.json                        【示例】tslint配置文件,可能存在多份
├ webpack.*.conf.js                    【示例】webpack配置文件,可能存在多份。
dist/                                   代码编译目标文件夹
public/                                 静态资源文件根目录
├ fonts/
├ images/
├ index.html
scripts/                               【可选】存放项目的npm命令可执行脚本
shims/                                 【可选】使用TypeScript的情况下,需要对类型定义做扩充时使用的文件目录
├ global.d.ts                          【示例】对Window等全局对象进行类型定义拓展
├ json-file.d.ts                       【示例】对json文件导出的对象进行类型定义拓展
├ vue.d.ts                             【示例】对Vue实例进行类型定义拓展
├ *.d.ts                               【示例】以及其它各种各样的类型定义拓展文件,多份
src/                                    项目源码根目录
├ assets/                               变动较为频繁的资源文件目录
├─ fonts/
├─ images/
├ components/                           项目中使用的业务组件目录,跨项目使用的组件请打包发布到私有制品库
├─ base/                               【可选】基础组件,如果完全使用第三方组件库一般不需要
├─ layout/                             【可选】布局组件,如果完全使用第三方组件库一般不需要
├─ data-grid/                           其它组件按功能命名文件目录
├ enums/                               【可选】项目中使用的枚举对象文件目录
├─ responseStatus.js
├─ httpMethods.json
├ router/                               项目前端路由相关配置文件夹
├─ modules/                            【可选】各模块前端路由配置文件目录,若使用后端服务提供和注册前端路由则不需要,简单项目也可省略
├── index.js
├─ guards.js                            前端路由导航守卫
├─ index.js                             前端路由入口文件,对于简单项目里面可能会包含路由定义和动态路由注册逻辑。
├─ registry.js                         【可选】动态路由注册入口文件,简单项目可省略
├ services/                            【可选】前端调用后端服务的文件目录,简单项目可省略
├─ orderService.js                     【示例】订单服务,暴露例如fetchActiveOrders(), fetchOrderDetailById(id)等方法
├─ authorizeService.js                 【示例】用户鉴权服务,暴露login、logout等方法
├ store/                               【可选】Vuex Store目录文件,若不使用vuex则不需要
├─ modules/
├── index.js
├─ getters.js
├─ mutation-types.js
├ styles/                               项目内的样式定义文件目录
├─ components/                          项目内组件样式定义文件目录(若直接定义在src/components中则可以省略)
├─ overrids/                            项目中对第三方依赖的改写,可省略
├─ global.scss                          全局样式定义(被打包器注册),不包含reset.css这类文件的内容,是为增加前端辨识度的全局定义,例如基于design token的变量定义
├─ index.scss                           样式入口文件,组织类似第三方依赖的样式、themes、reset.css等文件
├ utils/                                项目中跨模块使用的工具方法文件目录
├ views/                                项目视图层代码
├─ order/                              【示例】按业务模块组织视图层内容
├── columns.js                         【示例】列表数据列定义文件
├── Detail.vue
├── List.vue
├─ Login.vue                            登录页面
├─ NotFound.vue                         404未找到资源页面
├─ Unauthorized.vue                     403未授权页面
├─ InternalServerError.vue              500服务器错误页面
├ index.js                              前端项目入口,包含第三方依赖(UI组件库、Vue插件、jsbridge)的引用和入口挂载点的声明
test/                                   项目测试代码根目录
├ e2e/                                  e2e测试相关文件目录
├ unit/                                 单元测试相关文件目录
.browserslistrc                         目标浏览器的范围配置文件,供@bable/preset-env或autoprefixer使用
.env.*                                  环境配置文件,可能存在多份
.eslintignore                           eslint忽略内容设置
.eslintrc.js                            eslint配置文件,文件类型可以是js、json等
.gitignore                              git忽略内容设置
.prettierrc                             prettier插件配置文件
.stylelintrc.js                         stylelint配置文件
README.md                               项目说明文件
babel.config.js                         babel配置文件,文件类型可选
package.json                            项目描述文件
postcss.config.js                       postcss配置文件
vue.config.js                           vue-cli配置文件

而规模较小的前端项目,我们推荐的目录文件组织方式如下。
同时,建议在条件允许的情况下使用微前端技术将项目进行拆分,避免项目过大带来的编译打包问题。

bins/                                  【可选】存放shell脚本、git命令等内容,较大项目可能包含更多的构建命令
configs/                                存放非固定路径的配置信息文件,部分配置文件必须保持在项目根目录下
├ tsconfig.*.json                      【示例】TypeScript配置文件,可能存在多份
├ tslint.*.json                        【示例】tslint配置文件,可能存在多份
├ webpack.*.conf.js                    【示例】webpack配置文件,可能存在多份。
dist/                                   代码编译目标文件夹
public/                                 静态资源文件根目录
├ fonts/
├ images/
├ index.html
scripts/                               【可选】存放项目的npm命令可执行脚本
shims/                                 【可选】使用TypeScript的情况下,需要对类型定义做扩充时使用的文件目录
├ global.d.ts                          【示例】对Window等全局对象进行类型定义拓展
├ json-file.d.ts                       【示例】对json文件导出的对象进行类型定义拓展
├ vue.d.ts                             【示例】对Vue实例进行类型定义拓展
├ *.d.ts                               【示例】以及其它各种各样的类型定义拓展文件,多份
src/                                    项目源码根目录
├ assets/                               变动较为频繁的资源文件目录
├─ fonts/
├─ images/
├ components/                           项目中『跨业务模块』使用的业务组件目录,跨项目使用的组件请打包发布到私有制品库
├─ base/                               【可选】基础组件,如果完全使用第三方组件库一般不需要
├─ layout/                             【可选】布局组件,如果完全使用第三方组件库一般不需要
├─ data-grid/                          【示例】其它组件按功能命名文件目录
├ enrich/                              【可选】项目引用第三放依赖(UI组件库、插件等)的相关代码、配置所属文件目录。内容较少时可省略
├ enums/                               【可选】项目中『跨业务模块』使用的枚举对象文件目录。
├─ responseStatus.js
├─ httpMethods.json
├ router/                               项目前端路由相关配置文件夹
├─ guards/                              前端路由导航守卫文件目录
├─ modules/                            【可选】各模块前端路由配置文件目录,若使用后端服务提供和注册前端路由则不需要。
├── index.js
├─ index.js                             前端路由入口文件,引用guards中的路由导航、modules中的静态路由,使用registry中的动态注册逻辑,构造完整的前端路由实例。
├─ registry.js                         【可选】动态路由注册入口文件,若完全使用静态路由则不需要。
├ services/                             前端调用后端服务的文件目录,此处仅存放『跨业务模块』使用的那些服务调用。
├─ authorizeService.js                 【示例】用户鉴权服务,暴露login、logout等方法
├─ userInfoService.js                  【示例】用户查询服务,暴露fetchUserInfoById等方法
├ store/                               【可选】Vuex Store目录文件,若不使用vuex则不需要
├─ modules/
├── index.js
├─ getters.js
├─ mutation-types.js
├ styles/                               项目内的样式定义文件目录
├─ components/                          项目内组件样式定义文件目录(若直接定义在src/components中则可以省略)
├─ overrids/                            项目中对第三方依赖的改写,可省略
├─ global.scss                          全局样式定义(被打包器注册),不包含reset.css这类文件的内容,是为增加前端辨识度的全局定义,例如基于design token的变量定义
├─ index.scss                           样式入口文件,组织类似第三方依赖的样式、themes、reset.css等文件
├ utils/                                项目中跨模块使用的工具方法文件目录
├ modules/                              当项目规模较大,则在该目录下分业务场景进行业务模块代码的管理,提高业务代码集中度同时便于未来项目拆分。
├─ transaction/                        【示例】业务模块,一般针对一个「业务领域」,例如金融交易管理(涵盖委托管理、成交管理、分红管理、持仓管理)
├── components/                        【可选】该业务模块下的组件
├── enums/                             【可选】该业务模块下的枚举对象
├── utils/                             【可选】该业务模块下的工具方法
├── services/                          【可选】该业务模块下的服务调用
├── views/                              该业务模块下的视图层代码目录
├─── bonus/                             该业务领域中的某一类业务功能。
├──── columns.js
├──── List.vue
├──── Detail.vue
├─── deals/
├─── orders/
├─── positions/
├ views/                                项目通用的视图层,存放非业务模块的视图相关文件
├─ Login.vue                            登录页面
├─ NotFound.vue                         404未找到资源页面
├─ Unauthorized.vue                     403未授权页面
├─ InternalServerError.vue              500服务器错误页面
├ index.js                              前端项目入口文件,引用enrich/index.js等文件
test/                                   项目测试代码根目录
├ e2e/                                  e2e测试相关文件目录
├ unit/                                 单元测试相关文件目录
.browserslistrc                         目标浏览器的范围配置文件,供@bable/preset-env或autoprefixer使用
.env.*                                  环境配置文件,可能存在多份
.eslintignore                           eslint忽略内容设置
.eslintrc.js                            eslint配置文件,文件类型可以是js、json等
.gitignore                              git忽略内容设置
.prettierrc                             prettier插件配置文件
.stylelintrc.js                         stylelint配置文件
README.md                               项目说明文件
babel.config.js                         babel配置文件,文件类型可选
package.json                            项目描述文件
postcss.config.js                       postcss配置文件
vue.config.js                           vue-cli配置文件