H5 浅谈JS和CSS的命名规范

想成为一名优秀的前端开发工程师,代码的可读性与复用性是必不可少的。本文从命名的角度来谈谈这个话题。

1、JS命名规范

1.1 变量

命名方法:小驼峰式命名法。

命名规范:前缀应当是名词。(函数的名字前缀为动词,以此区分变量和函数)

命名建议:尽量在变量名字中体现所属类型,如:length、count等表示数字类型;而包含name、title表示为字符串类型。

// 好的命名方式
let maxCount =10;
let tableTitle ='LoginTable';

// 不好的命名方式
let setCount =10;
let getTitle ='LoginTable';

1.2 常量

命名方法:名称全部大写。
命名规范:使用大写字母和下划线来组合命名,下划线用以分割单词。

const MAX_COUNT =10;
const URL ='http://www.foreverz.com';

1.3 函数

命名方法:小驼峰式命名法。
命名规范:前缀应当为动词。
命名建议:可使用常见动词约定

动词 含义 返回值
can 判断是否可执行某个动作(权限相关) 函数返回一个布尔值。true:可执行;false:不可执行
should 判断是否可执行某个动作(展示相关) 函数返回一个布尔值。true:可展示;false:不可展示
has 判断是否含有某个值 函数返回一个布尔值。true:含有此值;false:不含有此值
is 判断是否为某个值 函数返回一个布尔值。true:为某个值;false:不为某个值
get 获取某个值 函数返回一个非布尔值
set 设置某个值 无返回值、返回是否设置成功或者返回链式对象
load 加载某些数据 无返回值或者返回是否加载完成的结果
// 是否可阅读
function canRead():boolean
 {
return true;
}

// 获取名称
function getName():string
 {
return this.name;
}

1.4 类 & 构造函数

命名方法:大驼峰式命名法,首字母大写。
命名规范:前缀为名称。

 class Person {
       public name:string;
       constructor(name) {
           this.name = name;
        }
    }

const  person =new Person('mevyn');

1.5 类的成员

类的成员包含:

  1. 公共属性和方法:跟变量和函数的命名一样。
  2. 私有属性和方法:前缀为_(下划线),后面跟公共属性和方法一样的命名方式。
class  Person {
private _name:string;
constructor() { }
// 公共方法
getName() {
   return  this._name;
}

// 公共方法
setName(name) {
    this._name = name;
}
}

const person =newPerson();
person.setName('mervyn');
person.getName();// ->mervyn

2、CSS命名规范

CSS的命名跟可重用性关系很大,可重用性与语义化是一对矛盾体。于是需要一个折中方案。这里参考了网易NEC做法。

2.1 约定

类别 前缀 用途
.l(layout) 布局类 将页面分割为几个大块,通常有头部、主体、主栏、侧栏、尾部等
.m(module) 模块类 通常是一个语义化的可以重复使用的较大的整体!比如导航、登录、注册、各种列表、评论、搜索等!
.u(unit) 单元类 通常是一个不可再分的较为小巧的个体,通常被重复用于各种模块中!比如按钮、输入框、loading、图标等!
.f(functional) 功能类 为方便一些常用样式的使用,我们将这些使用率较高的样式剥离出来,按需使用,通常这些选择器具有固定样式表现,比如清除浮动等
.s(status) 状态类 为状态类样式加入前缀,统一标识,方便识别,她只能组合使用或作为后代出现

2.2 扩展

  • 相同语义的不同类命名
    方法:直接加数字或字母区分即可(如:.m-list、.m-list2、.m-list3等,都是列表模块,但是是完全不一样的模块)。
    其他举例:.f-fw0、.f-fw1、.s-fc0、.s-fc1、.m-logo2、.m-logo3、u-btn、u-btn2等等。
  • 模块和单元的扩展类的命名方法
    当A、B、C、...它们类型相同且外形相似区别不大,那么就以它们中出现率最高的做成基类,其他做成基类的扩展。

方法:+“-”+数字或字母(如:.m-list的扩展类为.m-list-1、.m-list-2等)。

补充:基类自身可以独立使用(如:class="m-list"即可),扩展类必须基于基类使用(如:class="m-list m-list-2")。

如果你的扩展类是表示不同状态,标识状态的方法采取独立状态分类(.s-)方法:.u-btn.s-dis,.m-box.s-sel,然后像这样使用:class="u-btn s-dis"。

  • 模块和元件的后代选择器的扩展类
    有时候模块内会有些类似的东西,如果你没有把它们做成元件和扩展,那么也可以使用后代选择器和扩展。
    后代选择器:.m-login .btn{}。
    后代选择器扩展:.m-login .btn-1{},.m-login .btn-dis{}。
    同样也可以采取独立状态分类(.s-)方法:.m-login .btn.s-dis{},然后像这样使用:class="btn z-dis"。
    注:此方法用于类选择器,直接使用标签做为选择器的则不需要使用此命名方法。
    注:为防止后代选择器的扩展类和大类命名规范冲突,后代选择器不允许使用单个字母。
    比如:.m-list .a{}是不允许的,因为当这个.a需要扩展的时候就会变成.a-bb,这样就和大类的命名规范冲突。

2.3 样式文件组织

// 重置类样式+非业务公共类
<link href="assets/css/base.css" rel="stylesheet" />
// 业务公用复用类样式
<link href="assets/css/common.css" rel="stylesheet" />
// 特定业务类样式
<link href="assets/css/index.css" rel="stylesheet" />

重置类样式不做要求,但对于复用类和业务类样式需要遵守2.1 & 2.2 约束

3、参考

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

推荐阅读更多精彩内容