js和css命名规范

JavaScript

命名规则:

  • 变量和函数为小驼峰法标识, 即除第一个单词之外,其他单词首字母大写( lowerCamelCase)

  • 常量 (如 USER_INFO) 为大写 (UPPERCASE ) + 下划线连接

变量名

变量名推荐使用驼峰法来命名(camelCase)。


示例:

let userName = 'lili';

常量

驼峰 + 下划线连接


示例:

const USER_INFO = 'USER_INFO';

方法名

方法使用驼峰法来命名(camelCase)。

前缀应当为动词。可使用常见动词约定。

| 动词 | 含义 | 返回值 |

-------- | -----: | :----:

| can | 判断是否可执行某个动作(权限) | 函数返回一个布尔值。true:可执行;false:不可执行 |

| has | 判断是否含有某个值 | 函数返回一个布尔值。true:含有此值;false:不含有此值 |

| is | 判断是否为某个值 | 函数返回一个布尔值。true:为某个值;false:不为某个值 |

| get | 获取某个值 | 函数返回一个非布尔值 |

| set | 设置某个值 | 无返回值、返回是否设置成功或者返回链式对象 |

| load | 加载某些数据 | 无返回值或者返回是否加载完成的结果 |


示例:

// 是否可阅读

function canRead() {

  return true;

}

// 获取名称

function getName(name) {

  return name;

}

空格与运算符

通常运算符 ( = + - * / ) 前后需要添加空格。


示例:

let x = y + z;

let arr = ["aa", "bb", "cc"];

代码缩进

通常使用 4 个空格符号来缩进代码块。

垂直空行

变量、if、forEach、while 等,中间应使用空行。


示例:

let num = 10;

if (num === 10) {

    // code

}

语句规则

简单语句的通用规则:

  • 一条语句通常以分号作为结束符。

let arr = ["Volvo", "Saab", "Fiat"];

let userInfo = {

    firstName: "li",

    lastName: "zhong",

    age: 20

};

复杂语句的通用规则:

  • 将左花括号放在第一行的结尾。

  • 左花括号前添加一空格。

  • 将右花括号独立放在一行。

  • 不要以分号结束一个复杂的声明。


function getNum(num) {

    return num;

}

对象规则

对象定义的规则:

  • 将左花括号与类名放在同一行。

  • 冒号与属性值间有个空格。

  • 字符串使用双引号,数字不需要。

  • 最后一个属性-值对后面不要添加逗号。

  • 将右花括号独立放在一行,并以分号作为结束符号。


let userInfo = {

    firstName: "li",

    lastName: "zhong",

    age: 20

};

每行代码字符小于 80 或者 120 字符

为了便于阅读每行字符建议小于数 80 或者 120 个。

如果一个 JavaScript 语句超过了 80 或者 120 个字符,建议在 运算符或者逗号后换行。

避免 == 的使用

== 会发生隐式类型转换,推荐使用 === 。


示例:

if (age === 20) {   

    // code

}

减少魔鬼数字

魔鬼数字的定义:在代码中没有具体含义的数字、字符串。

魔鬼数字主要影响了代码可读性,读者看到的数字无法理解其含义,从而难以理解程序的意图。当程序中出现的魔鬼数字过多时,代码的可维护性将会急剧下降,代码变得难以修改,并容易引入错误。


示例:

if (code === 1) {

    // code

}

解决办法:使用常量代替魔鬼数字;


示例:

if (code === NET_CODE) {

    // code

}

注释的使用规则

单行注释以 // 开头。


示例:

// 姓名

const userName = 'abc';

多行注释以 /* 开头,以 */ 结尾。


示例:

/*

* 这里就是注释1

* 这里就是注释2

* 这里就是注释 ...

*/

使用 ES6 简化代码

ES6 简化代码的形式很多,自行去 Google 查询;


let {userName = '', age = 0 } = userInfo;


let userName = 'abc';

let age = 20;

let userInfoStr = `${userName} ${age}`;

CSS

CSS 采用 BEM 命名规范;

BEM 是 Block(块) Element(元素) Modifier(修饰器)的简称。

使用BEM规范来命名CSS,组织HTML中选择器的结构,利于CSS代码的维护,使得代码结构更清晰(弊端主要是名字会稍长)。

如何使用BEM:

  • 1、一个独立的(语义上或视觉上),可以复用而不依赖其它组件的部分,可作为一个块(Block)

  • 2、属于块的某部分,可作为一个元素(Element)

  • 3、用于修饰块或元素,体现出外形行为状态等特征的,可作为一个修饰器(Modifier)

在本规范中,以横线 - 来作为块和元素的间隔,以双下划线 __ 来作为块和修饰器 或 元素和修饰器 的间隔,以中划线 - 来作为 块|元素|修饰器 名称中多个单词的间隔

保证各个部分只有一级 B-E__M ,修饰器需要和对应的块或元素一起使用,避免单独使用。

HTML 书写


示例:



标题

在CSS文件中使用:


.search-form {

    position: relative;

}

.search-form__input {

    font-size: 12px;

}

.search-form__button_hover {}

/* 避免:避免使用不必要的嵌套(此处只是简单的嵌套,没有必要) */

.search-form__content-left .search-form__input {}

/* 稍好的嵌套(此处是在块的theme1修饰器下的子元素,某些时候有必要) */

.search-form_theme1 .search-form__input {}

/* 错误:使用了标签 */

button.search-form__button {}

.search-form button {}

在Stylus文件中 书写

而在Stylus文件中,也需要注意嵌套层次的意义,尽量按照 BEM三层来


/* 避免这样做 .search 不是一个独立的块 */

.search {

    /* 应该把这个块提取出来 */

    &-form {

        &__button {

            &_hover {}



            /* 应该把这个元素提取出来 */

            &-set {

                &_hover {}

            }

        } 

    }

    &-result {



    }

}

/* 建议这样,按照各级区分出来 */

.search-form {

    &__button {

        &_hover {}

    }



    &_button-set {

        &_hover {}

    }

}

.search-result {

}

/* 对于嵌套在块中的块,如果非常有必要,可以嵌套写样式 */

.search-form {

    .my-img {

        &__logo {}

    }

}

/* 但一般来说,不建议,因为这破坏了块的独立性。可转换成设置对应的 元素来表现,如 */

.search-form {}

.my-img {

    &__search-form-logo {}

}

CSS网页公共样式命名

| CSS样式命名 | 说明 |

-------- | -----: |

| wrap | 用于最外层 |

| header | 用于头部 |

| main | 用于主体内容(中部) |

| main-left | 左侧布局 |

| main-right | 右侧布局 |

| nav | 网页菜单导航条 |

| content | 用于网页中部主体 |

| footer | 用于底部 |

| menu | 菜单 |

| submenu | 子菜单 |

| sideBar | 侧栏 |

| tag | 标签 |

| message | 提示信息 |

| tips | 小技巧 |

| vote | 投票 |

| friendlink | 友情连接 |

| title | 标题 |

| summary | 摘要 |

| loginbar | 登录条 |

| hot | 热门热点 |

| search | 搜索 |

| copyright | 版权信息 |

| logo | 网站LOGO标志 |

| regsiter | 注册 |

| arrow | 箭头 |

| scroll | 滚动 |

| status | 状态 |

| banner | 广告位 |

你可能感兴趣的:(js和css命名规范)