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 书写


示例:

<!-- 某个块 -->

<form class="search-form">

    <!-- 某个元素 -->

    <div class="search-form__content-left">

        <!-- 错误:不能出现多个元素 -->

        <h2 class="search-form__content-left__h2">标题</h2>

        <!-- 某个元素,虽然是子集,保证了只有一级元素 -->

        <input class="search-form__input">

        <!-- 某个元素,加上了hover修饰器 -->

        <button class="search-form__button search-form__button_hover">搜索</button>

        <button class="search-form__button-set search-form__button-set_hover">搜索1</button>

        <!-- 错误:不能单独使用lg修饰器 -->

        <button class="search-form__button_lg">搜索</button>



        <!-- 块中可嵌套着另一个块 -->

        <p class="my-img">

            <img class="my-img__logo" src="abc.png" alt="image" title="image">

        </p>



    </div>

</form>

<div class="search-result"></div>

在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 | 广告位 |

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