Vue项目代码规范

一、UI框架及css预处理器选择

1、PC端Vue项目UI框架:ElementUI(优先)、iView
2、移动端Vue项目UI框架:mint-ui(优先)、vant
3、sass/scss、less、stylus ?????
推荐less:less相对比sass更简洁,而stylus的语法灵活性开放性过大,不利于团队协作开发。

二、脚手架、插件选择

2.1、脚手架vue-cli2.0 OR vue-cli3.0
推荐vue-cli2.0:团队中熟悉2.0版本脚手架的人居多,脚手架是一个工具类的存在。
2.2、网络请求:axios
2.3、时间格式化插件:momentjs
2.4、富文本编辑器:ueditor
2.5、图片剪裁插件:cropperjs
2.6、图表:echarts

三、命名规范

3.1、id和class的命名原则

应反映该元素的功能或使用通用名称,而不要用抽象的晦涩的命名(原则:见名知其义)

3.2、文件夹、文件名、id、class具体命名规范:驼峰命名法

  • 文件夹采用“大驼峰命名法”
例:DataBaseUser:变量DataBaseUser单词首字母大写。
注:文件名不要以中文或人名命名,可以在文件内部注释说明是谁修改或建立的这个文件
  • 文件名采用“大驼峰命名法”
例:DataBaseUser:变量DataBaseUser单词首字母大写。
  • id:采用“小驼峰命名法”
例:myStudentCount:变量myStudentCount第一个单词是全部小写,后面的单词首字母大写。
  • class:采用“中划线法命名法”
例:print-employee-paychecks:函数名中的每一个逻辑断点都有一个下划线来标记。

3.3、id和class命名越精简越好,只要足够表达意思,这样有助于理解,同时也能提高代码效率

.navigation{} /* 不推荐 */
.login_box_inside_con{} /* 不推荐 */
.nav{} /* 推荐 */

3.4、命名嵌套问题

书写css要注意先后顺序和嵌套问题,从性能上考虑尽量减少选择器的层级

.nav ul.list{} /* 不推荐 */
.nav .list{} /* 推荐 */

3.5、命名中尽量避免使用中文拼音,应该采用更简明有语义的英文单词进行组合

  • 命名注意缩写,但是不能盲目缩写;
  • 不允许通过1、2、3等序号进行命名;
  • 避免class与id重名;
  • id注意用于标识模块或页面的某一个父容器区域,名称必须唯一,不要随意新建id;
  • class用于标识某一个类型的对象,命名必须言简意赅;
  • 尽可能提高代码模块的复用,样式尽量用组合的方式;
  • 规则名称中不应该包含颜色、定位等与具体显示效果相关的信息,应该用意义命名,而不是结果名称。

3.6、Vue 项目中的命名

* Store 中的Module 使用“小驼峰命名法”
* Store 中的Mutation 使用 全部大写的下划线命名法
* Store 中的state/getters/action 使用“小驼峰命名法”
* 组件必须使用“大驼峰命名法”命名法,
* 引用组件时禁止使用别名,模板内组件标签名遵循html 标签命名规范,或者使用组件名
* 组件名必须避免使用Vue保留标签名(包括HTML标签和Vue内部标签)
* 组件文件和组件使用相同的名字
* 前端路由路径使用全小写命名法

四、排版规范

4.1、代码格式

  • 1、大括号的使用约定。
* 如果是大括号内为空,则简洁地写成{}即可,不需要换行
例:{}

* 非空代码块则:
(1)左大括号前不换行有空格;
(2)左大括号后换行;
(3)右大括号前换行;
(4)右大括号后还有else等代码则不换行;
(5)表示终止的右大括号后必须换行。
例:
    methods: {
        testFunc () {
            console.log("测试方法");
            var flag = false;
            if (this.num === 0) {
                flag = true;
            } else {
                 flag = false;
            }
        }
    }
  • 2、左右小括号与中间字符之间不出现空格。
例:
if (this.num === 0) {  // 左右小括号()中间字符直接不出现空格
    flag = true;
} 
  • 3、if/for/while/switch 等保留字与括号之间都必须加空格。
例:
if () {}
for () {}
while () {}
switch () {}
  • 4、任何二目、三目运算符的左右两边都需要加一个空格。
例:
int a = 1, b = 2, z, c = 3;
z = a > b ? a : (b > c ? b : c);
  • 5、注释的双斜线与注释内容之间有且只有一个空格
例:
// 我就是个注释信息展示
/** 我就是个注释信息展示 **/
/** 
 ** 我就是个注释信息展示 
**/
  • 6、方法参数在定义和传入时,多个参数逗号后边必须加空格。
例:
    methods: {
        testFunc (pra1, pra2, pra3) {
            console.log("测试方法");
            var flag = false;
            if (this.num === 0) {
                flag = true;
            } else {
                 flag = false;
            }
        }
    }
  • 7、在 if/else/for/while/do 语句中必须使用大括号。即使只有一行代码,避免采用 单行的编码方式:if (condition) statements;

五、项目目录结构

5.1、项目初始目录

├── node_modules  // 项目依赖包文件夹
├── build   // 编译配置文件,一般不用管
│   ├── build.js
│   ├── check-versions.js
│   ├── dev-client.js
│   ├── dev-server.js
│   ├── utils.js
│   ├── vue-loader.conf.js
│   ├── webpack.base.conf.js
│   ├── webpack.dev.conf.js
│   └── webpack.prod.conf.js
├── config  // 项目基本设置文件夹
│   ├── dev.env.js  // 开发配置文件
│   ├── index.js  // 配置主文件
│   └── prod.env.js  // 编译配置文件
├── index.html   // 项目入口文件
├── package-lock.json  // npm5 新增文件,优化性能
├── package.json  // 项目依赖包配置文件
├── src    // 我们的项目的源码编写文件
│   ├── App.vue  // APP入口文件
│   ├── assets  // 初始项目资源目录,回头删掉
│   │   └── logo.png
│   ├── components // 组件目录
│   │   └── Hello.vue // 测试组件,回头删除
│   ├── main.js // 主配置文件
│   └── router // 路由配置文件夹
│       └── index.js   // 路由配置文件
└── static // 资源放置目录

5.2 src目录配置

├── App.vue // APP入口文件
├── components  // 组件文件夹
│   └──common  // 共用组件文件夹
│   └──page  // 我们的页面组件文件夹
│   │   ├── home   // 模块划分文件夹
│   │   ├── user     // 模块划分文件夹
│   └──Main.vue    // 项目主入口文件
├── plugins  // 项目配置文件夹
│   └── ajax // 网络请求配置文件
│   │   ├── http.js     // 网络请求封装文件
│   └── api  // 常用工具文件夹
│   │   ├── index.js     // 自定义工具注册入口
│   │   ├── ValideCard.js     // 身份证验证规则文件
│   │   ├── valideEmail.js     // 邮箱验证规则
│   │   ├── valideTel.js         // 手机号证规则
│   └── url  // 项目配置文件
│   │   ├── index.js     // 接口注册入口
│   │   ├── url.js         // 接口API自定义文件
├── main.js  // 项目配置文件
├── router  // 路由配置文件夹
│   └── index.js  // 路由配置文件
├── style  // scss 样式存放目录(待定,选用less或scss)
│   ├── base   // 基础样式存放目录
│   │   ├── _base.scss   // 基础样式文件
│   │   ├── _color.scss  // 项目颜色配置变量文件
│   │   ├── _mixin.scss  // scss 混入文件
│   │   └── _reset.scss  // 浏览器初始化文件
│   ├── scss   // 页面样式文件夹
│   │   ├── _content.scss  // 内容页面样式文件
│   │   └── _index.scss  // 列表样式文件
      └── style.scss  // 主样式文件

5.3 CSS属性编写顺序(一般遵循显示属性 -> 自身属性 -> 文本属性 -> 其他属性的书写格式)

  • 显示属性:display/list-style/position/float/clear...
  • 自身属性(盒模型):width/height/margin/padding/border
  • 背景:background
  • 行高:line-height
  • 文本属性:color/font/text-decoration/text-align/text-indent/vertical-align/white-space/content...
  • 其他:cursor/z-index/zoom/overflow...
  • CSS3属性:transform/transition/animation/box-shadow/border-radius
  • 如果使用CSS3的属性,如果有必要加入浏览器前缀,则按照-webkit-/-moz-/-ms-/-o-/std的顺序进行添加,标准属性写在最后
    链接的样式请严格按照如下顺序添加:a:link -> a:visited -> a:hover -> a:active


    属性编写顺序.png

注:补充说明

1、删除多余的空行

  • 所有方法与方法之间空1行

  • 所有代码块之间空1行

2、删除多余的注释

  • 删除注释掉的代码

  • 删除没有意义的注释

3、删除多余的方法

  • 如果方法没有使用到,请删除它

  • 如果方法没有执行任何业务逻辑,请删除它或者给出一定注释

4、删除未被使用的资源文件

5、添加必要的注释

  • 所有自定义的方法需要给出注释

  • 比较大的代码块需要给出注释

  • 所有代码中出现的阿拉伯数字需要给出注释

  • 程序中出现加密/解密 逻辑的操作地方,需要给出注释说明过程(无论是系统还是自定义)

  1. 整体代码风格需要统一
  • 代码后面的“{” 不需要单独占用一行

  • 逻辑运算符 与 代码之前空一格

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 158,560评论 4 361
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 67,104评论 1 291
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 108,297评论 0 243
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 43,869评论 0 204
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 52,275评论 3 287
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 40,563评论 1 216
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 31,833评论 2 312
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 30,543评论 0 197
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 34,245评论 1 241
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 30,512评论 2 244
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 32,011评论 1 258
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 28,359评论 2 253
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 33,006评论 3 235
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 26,062评论 0 8
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 26,825评论 0 194
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 35,590评论 2 273
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 35,501评论 2 268

推荐阅读更多精彩内容

  • 1.Vue 组件命名 有意义的: 不过于具体,也不过于抽象 简短: 2 到 3 个单词 具有可读性: 以便于沟通交...
    喝不醉再来阅读 4,488评论 0 1
  • 前言 本开发规范基于《阿里巴巴Java开发手册终极版》修改,并集成我们自己的项目开发规范,整合而成。 为表示对阿里...
    4ea0af17fd67阅读 5,562评论 0 5
  • Spring Cloud为开发人员提供了快速构建分布式系统中一些常见模式的工具(例如配置管理,服务发现,断路器,智...
    卡卡罗2017阅读 134,099评论 18 139
  • 身体越疲惫,思维越清醒。 只有在冲突里,在矛盾中,才会有一些新的东西诞生。 新的想法,新的目标,甚至是新的人格。 ...
    十字街角阅读 212评论 0 0
  • 面谈和电话还是会有很大差距,很多人在电话中不会回答你这么多问题,会以太忙为理由,挂断电话,可是见面就不同,他可以边...
    甜心教主阅读 127评论 0 0