前端規(guī)范

前言:

不規(guī)范的開(kāi)發(fā)不僅使日后代碼維護(hù)變的困難,同時(shí)也不利于團(tuán)隊(duì)的合作胰默。下面列出了前端開(kāi)發(fā)規(guī)范

通用規(guī)范:

1场斑、前端工具統(tǒng)一sublime text漓踢,配置信息統(tǒng)一,如下:

{

"caret_style": "phase",

"color_scheme": "Packages/User/SublimeLinter/Monokai (SL).tmTheme",

"default_line_ending": "unix",

"ensure_newline_at_eof_on_save": true,

"findreplace_small": true,

"font_size": 12,

"ignored_packages":

[

"Vintage"

],

"line_padding_bottom": 4,

"line_padding_top": 4,

"show_panel_on_build": false,

"tab_size": 4,

"tabs_medium": true,

"trim_trailing_white_space_on_save": false

}

2漏隐、空格還是Tab喧半?我們強(qiáng)制使用4個(gè)占位符的Tab縮進(jìn),如果遇到不是tab縮進(jìn)的青责,可以借助sublime text來(lái)轉(zhuǎn)換成tab縮進(jìn)挺据,步驟如下:

ctrl+shift+p 輸入convert to Tabs,敲回車(chē)就可以

3脖隶、統(tǒng)一采用UTF8編碼

4扁耐、項(xiàng)目發(fā)布必須壓縮、圖片優(yōu)化产阱,提高頁(yè)面訪(fǎng)問(wèn)速度

5做葵、文件命名統(tǒng)一使用小寫(xiě)字母,js文件多個(gè)字母用'-'連接心墅,頁(yè)面多個(gè)字母用'_'連接

6酿矢、js、css能夠通用化怎燥、組件化

es5:

1瘫筐、一行代碼長(zhǎng)度盡量保持80列左右

2、變量

聲明變量必須加上var關(guān)鍵字铐姚,推薦一個(gè)var同時(shí)聲明多個(gè)變量策肝,或者一組有邏輯關(guān)系的變量,避免一個(gè)變量一個(gè) var隐绵,聲明Array和Object使用[]和{}之众,聲明變量時(shí)將其初始化,更易讀且性能更好。

變量不要使用關(guān)鍵字依许,對(duì)象key也不要使用關(guān)鍵字棺禾,在ie8下會(huì)報(bào)錯(cuò)

// bad

var obj = {

default: 1

};

3、命名

函數(shù)和變量命名使用駝峰式峭跳,命名盡量語(yǔ)義化膘婶,

// bad

var e = '',

l = 0;

// good

var element = '',

length = 0;

4、單例模式蛀醉、模塊化開(kāi)發(fā)

5悬襟、命名空間

每個(gè)應(yīng)該有自己的命名空間,并不會(huì)影響到其他模塊

6拯刁、單雙引號(hào)

強(qiáng)制使用單引號(hào)脊岳,性能好

7、語(yǔ)句結(jié)尾一定要加';'

8、JSON對(duì)象的最后一個(gè)字段割捅、數(shù)組最后一個(gè)元素后面都不能加','奶躯,在IE8下會(huì)報(bào)錯(cuò)

9、盡量不要使用with/eval

10棺牧、對(duì)象延遲聲明巫糙,對(duì)于頁(yè)面初始化不需要的變量朗儒,延遲聲明

11颊乘、所有語(yǔ)句都在聲明變量之后

12、提前返回值醉锄,提升代碼的性能

// bad

function fun(arg) {

var test;

if (arg) {

test = arg;

} else {

test = 'another'

}

return test;

}

// good

function fun(arg) {

if (arg) {

return arg;

} else {

return'another'

}

}

13乏悄、使用arg

var obj = {};

Object.keys({}).forEach(function(key) {

console.log(this); //obj

}, obj);

可以使用arg的Array.prototype.every、 Array.prototype.forEach恳不、 Array.prototype.some檩小、 Array.prototype.map、 Array.prototype.filter

14烟勋、this

15规求、條件優(yōu)化

// bad

if(a !== "") {

}

// good

if(!a) {

}

16、規(guī)范定義JSON對(duì)象卵惦,補(bǔ)全雙引號(hào)

// bad

var json = {

a: 1

};

// good

var json = {

"a":1

};

17阻肿、函數(shù)返回值應(yīng)盡量明確

// bad

function fun() {

return ;

}

// good

function fun() {

return false;

}

18、減少js對(duì)dom操作次數(shù)

19沮尿、對(duì)于if/else等后面的語(yǔ)句即使只有一行代碼也要在該行代碼的首尾加上'{}'丛塌。對(duì)于switch語(yǔ)句要給出default:情況的處理邏輯

20、字符串拼接在少量(次數(shù)為個(gè)位數(shù))的情況下可以使用'+', 大量的時(shí)候使用數(shù)組 join(), 或者盡可能采用模板引擎渲染

21畜疾、for循環(huán)遍歷提前計(jì)算數(shù)組長(zhǎng)度

22赴邻、變量類(lèi)型轉(zhuǎn)換

字符轉(zhuǎn)數(shù)字:+'0' 1*'0' toString()

數(shù)字轉(zhuǎn)字符:''+0 parseInt() parseFloat()

數(shù)字取整:Math.ceil() Math.floor() Math.round()

字符轉(zhuǎn)布爾:!!'0'

23、變量比較使用===啡捶,除(==null)之外

24姥敛、私有屬性、變量和方法名應(yīng)該以下劃線(xiàn)'_'開(kāi)頭

25瞎暑、異常處理

try{} catch(e){}

26徒溪、false

"", 0, null, undefined, NaN, void 0

27、true

"''", '""', '0', 'null', 'undefined', {}, []

28金顿、跨行語(yǔ)句以操作符結(jié)尾

var x = a ?

b :

c;

29臊泌、函數(shù)句柄命名是名詞

30、注釋

采用jsdoc方式注釋?zhuān)瘮?shù)注釋用/**/揍拆,函數(shù)內(nèi)注釋用//

禁止使用行末注釋

css:

1渠概、命名空間

wei- 組件的命名空間(取weiUI首)

pg- 頁(yè)面的命名空間(取page)

2、class 命名遵循關(guān)注分離(不要考慮html結(jié)構(gòu),比如子元素選擇器)播揪、松耦合的原則贮喧,同時(shí)注重易于理解

3、模塊化編寫(xiě)猪狈,語(yǔ)義化的模塊名

4箱沦、命名規(guī)則

4.1、BEM命名法雇庙,.a > .a-b > .a-b-c

4.2谓形、所有名稱(chēng)小寫(xiě),符合w3c規(guī)范

4.3疆前、類(lèi)名和id寒跳,多個(gè)變量之間用中劃線(xiàn)分割啊奄,{命名空間}-{模塊名}-{狀態(tài)描述}

4.4拘领、所有變量只能使用名詞

4.5、id栓始、class命名語(yǔ)義化胸完,不要使用 red书释、left 等表象的詞命名,常見(jiàn)例子

容器: wed-container

列表: wed-list we-list-item

內(nèi)容: wed-content

注意:class用來(lái)定義樣式赊窥,如果javascript里用到放在最后順序爆惧,id用來(lái)寫(xiě)交互,不需要特殊聲明(J_ 廢除)

5誓琼、為了實(shí)現(xiàn)代碼復(fù)用检激,減少重復(fù)冗余,難免要把代碼拆分在不同的 class 下面腹侣。我們要尋找一個(gè)平衡點(diǎn)叔收,避免過(guò)細(xì)的拆分,減少不必要的 class

6傲隶、不建議過(guò)度嵌套選擇符(semantic躺槍?zhuān)┙嚷桑x擇符嵌套在必要的情況下一般不超過(guò)三層;選擇符疊加一般不多于兩個(gè)

7跺株、css3不用加前綴复濒,統(tǒng)一用autoprefixer生成,規(guī)則:

[

'ie >= 7',

'ie_mob >= 10',

'ff >= 30',

'chrome >= 34',

'safari >= 7',

'opera >= 23',

'ios >= 7',

'android >= 2.3',

'bb >= 10'

]

8乒省、色值全部使用6位數(shù)

html:

1巧颈、語(yǔ)義化標(biāo)簽,webapp盡量多使用html5

<body>

<header></header>

<nav></nav>

<article>

? ? ?<section></section>

</article>

<aside>

</aside>

<footer></footer>

</body>

2袖扛、禁止使用非法標(biāo)簽屬性

3砸泛、后臺(tái)交互

data-api 接口

data-url 跳轉(zhuǎn)鏈接

最多支持二級(jí)十籍,比如

關(guān)注:data-api-follow

取消關(guān)注:data-api-unfollow

4、標(biāo)簽扁平化唇礁,禁止不必要的嵌套

5勾栗、標(biāo)簽屬性,屬性值使用中劃線(xiàn)或者駝峰式盏筐,禁止使用下劃線(xiàn)

6围俘、html嵌套規(guī)則

? 6.1塊級(jí)元素與塊級(jí)元素平級(jí)、內(nèi)嵌元素與內(nèi)嵌元素平級(jí)

? 6.2塊元素可以包含內(nèi)聯(lián)元素或某些塊元素琢融,但內(nèi)聯(lián)元素不能包含塊元素界牡,它只能包含其它的內(nèi)聯(lián)元素

? 6.3有幾個(gè)特殊的塊級(jí)元素只能包含內(nèi)嵌元素,不能再包含塊級(jí)元素

? 6.4塊級(jí)元素不能放在標(biāo)簽p里面

? 6.5li 標(biāo)簽可以包含 div 標(biāo)簽吏奸,因?yàn)閘i 和 div 標(biāo)簽都是裝載內(nèi)容的容器

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末欢揖,一起剝皮案震驚了整個(gè)濱河市陶耍,隨后出現(xiàn)的幾起案子奋蔚,更是在濱河造成了極大的恐慌,老刑警劉巖烈钞,帶你破解...
    沈念sama閱讀 222,378評(píng)論 6 516
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件泊碑,死亡現(xiàn)場(chǎng)離奇詭異,居然都是意外死亡毯欣,警方通過(guò)查閱死者的電腦和手機(jī)馒过,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 94,970評(píng)論 3 399
  • 文/潘曉璐 我一進(jìn)店門(mén),熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái)酗钞,“玉大人腹忽,你說(shuō)我怎么就攤上這事⊙庾鳎” “怎么了窘奏?”我有些...
    開(kāi)封第一講書(shū)人閱讀 168,983評(píng)論 0 362
  • 文/不壞的土叔 我叫張陵,是天一觀(guān)的道長(zhǎng)葫录。 經(jīng)常有香客問(wèn)我着裹,道長(zhǎng),這世上最難降的妖魔是什么米同? 我笑而不...
    開(kāi)封第一講書(shū)人閱讀 59,938評(píng)論 1 299
  • 正文 為了忘掉前任骇扇,我火速辦了婚禮,結(jié)果婚禮上面粮,老公的妹妹穿的比我還像新娘少孝。我一直安慰自己,他們只是感情好熬苍,可當(dāng)我...
    茶點(diǎn)故事閱讀 68,955評(píng)論 6 398
  • 文/花漫 我一把揭開(kāi)白布稍走。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪钱磅。 梳的紋絲不亂的頭發(fā)上梦裂,一...
    開(kāi)封第一講書(shū)人閱讀 52,549評(píng)論 1 312
  • 那天,我揣著相機(jī)與錄音盖淡,去河邊找鬼年柠。 笑死,一個(gè)胖子當(dāng)著我的面吹牛褪迟,可吹牛的內(nèi)容都是我干的冗恨。 我是一名探鬼主播,決...
    沈念sama閱讀 41,063評(píng)論 3 422
  • 文/蒼蘭香墨 我猛地睜開(kāi)眼味赃,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼掀抹!你這毒婦竟也來(lái)了?” 一聲冷哼從身側(cè)響起心俗,我...
    開(kāi)封第一講書(shū)人閱讀 39,991評(píng)論 0 277
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤傲武,失蹤者是張志新(化名)和其女友劉穎,沒(méi)想到半個(gè)月后城榛,有當(dāng)?shù)厝嗽跇?shù)林里發(fā)現(xiàn)了一具尸體揪利,經(jīng)...
    沈念sama閱讀 46,522評(píng)論 1 319
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 38,604評(píng)論 3 342
  • 正文 我和宋清朗相戀三年狠持,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了疟位。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 40,742評(píng)論 1 353
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡喘垂,死狀恐怖甜刻,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情正勒,我是刑警寧澤得院,帶...
    沈念sama閱讀 36,413評(píng)論 5 351
  • 正文 年R本政府宣布,位于F島的核電站昭齐,受9級(jí)特大地震影響尿招,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜阱驾,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 42,094評(píng)論 3 335
  • 文/蒙蒙 一就谜、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧里覆,春花似錦丧荐、人聲如沸。這莊子的主人今日做“春日...
    開(kāi)封第一講書(shū)人閱讀 32,572評(píng)論 0 25
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)弓坞。三九已至,卻和暖如春车荔,著一層夾襖步出監(jiān)牢的瞬間渡冻,已是汗流浹背。 一陣腳步聲響...
    開(kāi)封第一講書(shū)人閱讀 33,671評(píng)論 1 274
  • 我被黑心中介騙來(lái)泰國(guó)打工忧便, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留族吻,地道東北人。 一個(gè)月前我還...
    沈念sama閱讀 49,159評(píng)論 3 378
  • 正文 我出身青樓珠增,卻偏偏與公主長(zhǎng)得像超歌,于是被迫代替她去往敵國(guó)和親。 傳聞我的和親對(duì)象是個(gè)殘疾皇子蒂教,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,747評(píng)論 2 361

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

  • 1 前言 HTML 作為描述網(wǎng)頁(yè)結(jié)構(gòu)的超文本標(biāo)記語(yǔ)言巍举,一直有著廣泛的應(yīng)用。本文檔的目標(biāo)是使 HTML 代碼風(fēng)格保持...
    山豆山豆閱讀 1,187評(píng)論 2 6
  • 最佳原則 堅(jiān)持制定好的代碼規(guī)范凝垛。無(wú)論團(tuán)隊(duì)人數(shù)多少懊悯,代碼應(yīng)該同出一門(mén)。如果你想要為這個(gè)規(guī)范做貢獻(xiàn)或覺(jué)得有不合理的地方...
    Tiny_ae3d閱讀 1,639評(píng)論 0 1
  • 1:通用規(guī)范 tab鍵用兩個(gè)空格代替 因?yàn)樵诓煌到y(tǒng)的編輯工具對(duì)tab解析不一樣苔严,windows下的tab鍵是占四...
    糖心m閱讀 461評(píng)論 0 1
  • 通用規(guī)范 tab鍵用兩個(gè)空格代替 因?yàn)樵诓煌到y(tǒng)的編輯工具對(duì)tab解析不一樣定枷,windows下的tab鍵是占四個(gè)空...
    米塔塔閱讀 418評(píng)論 0 7
  • 通用規(guī)范 tab鍵用兩個(gè)空格代替 因?yàn)樵诓煌到y(tǒng)的編輯工具對(duì)tab解析不一樣孤澎,windows下的tab鍵是占四個(gè)空...
    戈薇薇閱讀 475評(píng)論 0 1