H5 淺談JS和CSS的命名規(guī)范

想成為一名優(yōu)秀的前端開發(fā)工程師,代碼的可讀性與復(fù)用性是必不可少的始藕。本文從命名的角度來談?wù)勥@個話題。

1、JS命名規(guī)范

1.1 變量

命名方法:小駝峰式命名法伍派。

命名規(guī)范:前綴應(yīng)當是名詞。(函數(shù)的名字前綴為動詞,以此區(qū)分變量和函數(shù))

命名建議:盡量在變量名字中體現(xiàn)所屬類型舌稀,如:length、count等表示數(shù)字類型;而包含name、title表示為字符串類型月洛。

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

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

1.2 常量

命名方法:名稱全部大寫。
命名規(guī)范:使用大寫字母和下劃線來組合命名狮荔,下劃線用以分割單詞殖氏。

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

1.3 函數(shù)

命名方法:小駝峰式命名法。
命名規(guī)范:前綴應(yīng)當為動詞总滩。
命名建議:可使用常見動詞約定

動詞 含義 返回值
can 判斷是否可執(zhí)行某個動作(權(quán)限相關(guān)) 函數(shù)返回一個布爾值席函。true:可執(zhí)行;false:不可執(zhí)行
should 判斷是否可執(zhí)行某個動作(展示相關(guān)) 函數(shù)返回一個布爾值营曼。true:可展示蒂阱;false:不可展示
has 判斷是否含有某個值 函數(shù)返回一個布爾值。true:含有此值妈踊;false:不含有此值
is 判斷是否為某個值 函數(shù)返回一個布爾值廊营。true:為某個值;false:不為某個值
get 獲取某個值 函數(shù)返回一個非布爾值
set 設(shè)置某個值 無返回值厦画、返回是否設(shè)置成功或者返回鏈式對象
load 加載某些數(shù)據(jù) 無返回值或者返回是否加載完成的結(jié)果
// 是否可閱讀
function canRead():boolean
 {
return true;
}

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

1.4 類 & 構(gòu)造函數(shù)

命名方法:大駝峰式命名法肪虎,首字母大寫刑枝。
命名規(guī)范:前綴為名稱。

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

const  person =new Person('mevyn');

1.5 類的成員

類的成員包含:

  1. 公共屬性和方法:跟變量和函數(shù)的命名一樣。
  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命名規(guī)范

CSS的命名跟可重用性關(guān)系很大,可重用性與語義化是一對矛盾體第煮。于是需要一個折中方案害晦。這里參考了網(wǎng)易NEC做法壹瘟。

2.1 約定

類別 前綴 用途
.l(layout) 布局類 將頁面分割為幾個大塊,通常有頭部鳄逾、主體稻轨、主欄、側(cè)欄雕凹、尾部等
.m(module) 模塊類 通常是一個語義化的可以重復(fù)使用的較大的整體殴俱!比如導(dǎo)航政冻、登錄、注冊线欲、各種列表明场、評論、搜索等李丰!
.u(unit) 單元類 通常是一個不可再分的較為小巧的個體苦锨,通常被重復(fù)用于各種模塊中!比如按鈕嫌套、輸入框逆屡、loading、圖標等踱讨!
.f(functional) 功能類 為方便一些常用樣式的使用魏蔗,我們將這些使用率較高的樣式剝離出來,按需使用痹筛,通常這些選擇器具有固定樣式表現(xiàn)莺治,比如清除浮動等
.s(status) 狀態(tài)類 為狀態(tài)類樣式加入前綴,統(tǒng)一標識帚稠,方便識別谣旁,她只能組合使用或作為后代出現(xiàn)

2.2 擴展

  • 相同語義的不同類命名
    方法:直接加數(shù)字或字母區(qū)分即可(如:.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、...它們類型相同且外形相似區(qū)別不大旦万,那么就以它們中出現(xiàn)率最高的做成基類左冬,其他做成基類的擴展。

方法:+“-”+數(shù)字或字母(如:.m-list的擴展類為.m-list-1纸型、.m-list-2等)拇砰。

補充:基類自身可以獨立使用(如:class="m-list"即可)梅忌,擴展類必須基于基類使用(如:class="m-list m-list-2")。

如果你的擴展類是表示不同狀態(tài)除破,標識狀態(tài)的方法采取獨立狀態(tài)分類(.s-)方法:.u-btn.s-dis牧氮,.m-box.s-sel,然后像這樣使用:class="u-btn s-dis"瑰枫。

  • 模塊和元件的后代選擇器的擴展類
    有時候模塊內(nèi)會有些類似的東西踱葛,如果你沒有把它們做成元件和擴展,那么也可以使用后代選擇器和擴展光坝。
    后代選擇器:.m-login .btn{}尸诽。
    后代選擇器擴展:.m-login .btn-1{},.m-login .btn-dis{}盯另。
    同樣也可以采取獨立狀態(tài)分類(.s-)方法:.m-login .btn.s-dis{}性含,然后像這樣使用:class="btn z-dis"。
    注:此方法用于類選擇器鸳惯,直接使用標簽做為選擇器的則不需要使用此命名方法商蕴。
    注:為防止后代選擇器的擴展類和大類命名規(guī)范沖突,后代選擇器不允許使用單個字母芝发。
    比如:.m-list .a{}是不允許的绪商,因為當這個.a需要擴展的時候就會變成.a-bb,這樣就和大類的命名規(guī)范沖突辅鲸。

2.3 樣式文件組織

// 重置類樣式+非業(yè)務(wù)公共類
<link href="assets/css/base.css" rel="stylesheet" />
// 業(yè)務(wù)公用復(fù)用類樣式
<link href="assets/css/common.css" rel="stylesheet" />
// 特定業(yè)務(wù)類樣式
<link href="assets/css/index.css" rel="stylesheet" />

重置類樣式不做要求格郁,但對于復(fù)用類和業(yè)務(wù)類樣式需要遵守2.1 & 2.2 約束

3、參考

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個濱河市绵患,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌悟耘,老刑警劉巖落蝙,帶你破解...
    沈念sama閱讀 206,968評論 6 482
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異暂幼,居然都是意外死亡筏勒,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 88,601評論 2 382
  • 文/潘曉璐 我一進店門旺嬉,熙熙樓的掌柜王于貴愁眉苦臉地迎上來管行,“玉大人,你說我怎么就攤上這事邪媳【枨辏” “怎么了荡陷?”我有些...
    開封第一講書人閱讀 153,220評論 0 344
  • 文/不壞的土叔 我叫張陵,是天一觀的道長迅涮。 經(jīng)常有香客問我废赞,道長,這世上最難降的妖魔是什么叮姑? 我笑而不...
    開封第一講書人閱讀 55,416評論 1 279
  • 正文 為了忘掉前任唉地,我火速辦了婚禮,結(jié)果婚禮上传透,老公的妹妹穿的比我還像新娘耘沼。我一直安慰自己,他們只是感情好朱盐,可當我...
    茶點故事閱讀 64,425評論 5 374
  • 文/花漫 我一把揭開白布群嗤。 她就那樣靜靜地躺著,像睡著了一般托享。 火紅的嫁衣襯著肌膚如雪骚烧。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,144評論 1 285
  • 那天闰围,我揣著相機與錄音赃绊,去河邊找鬼。 笑死羡榴,一個胖子當著我的面吹牛碧查,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播校仑,決...
    沈念sama閱讀 38,432評論 3 401
  • 文/蒼蘭香墨 我猛地睜開眼忠售,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了迄沫?” 一聲冷哼從身側(cè)響起稻扬,我...
    開封第一講書人閱讀 37,088評論 0 261
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎羊瘩,沒想到半個月后泰佳,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 43,586評論 1 300
  • 正文 獨居荒郊野嶺守林人離奇死亡尘吗,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,028評論 2 325
  • 正文 我和宋清朗相戀三年逝她,在試婚紗的時候發(fā)現(xiàn)自己被綠了。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片睬捶。...
    茶點故事閱讀 38,137評論 1 334
  • 序言:一個原本活蹦亂跳的男人離奇死亡黔宛,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出擒贸,到底是詐尸還是另有隱情臀晃,我是刑警寧澤觉渴,帶...
    沈念sama閱讀 33,783評論 4 324
  • 正文 年R本政府宣布,位于F島的核電站积仗,受9級特大地震影響疆拘,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜寂曹,卻給世界環(huán)境...
    茶點故事閱讀 39,343評論 3 307
  • 文/蒙蒙 一哎迄、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧隆圆,春花似錦漱挚、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,333評論 0 19
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至侣背,卻和暖如春白华,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背贩耐。 一陣腳步聲響...
    開封第一講書人閱讀 31,559評論 1 262
  • 我被黑心中介騙來泰國打工弧腥, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留,地道東北人潮太。 一個月前我還...
    沈念sama閱讀 45,595評論 2 355
  • 正文 我出身青樓管搪,卻偏偏與公主長得像,于是被迫代替她去往敵國和親铡买。 傳聞我的和親對象是個殘疾皇子更鲁,可洞房花燭夜當晚...
    茶點故事閱讀 42,901評論 2 345

推薦閱讀更多精彩內(nèi)容