前端開發(fā)脾拆?不存在的

成為一個合格的web 前端開發(fā)工程師要知道的小事情

CSS規(guī)范:

1,命名:

class應優(yōu)先慮以這元素具體目的來進行命名绰上,應盡量簡短且富有含義渠驼。

統(tǒng)一采用小寫英文字母、數(shù)字百揭、“-” 的組合。其中不得包含漢字课锌、空格和特殊字符盹舞。

不推薦

.demoimage {} /* "demo" 和 "image" 中間沒加 "-" */

不推薦

.error_status {}

推薦

.n-sample {}

原則上踢步,不建議縮寫,除非一看就懂的縮寫述雾,如nav兼丰。

盡量避免使用id來控制樣式。

2黍翎,選擇器:

避免出現(xiàn)過多的祖先選擇器艳丛,各瀏覽器會有性能差異,消耗在選擇器的時間也不盡相同碰酝。

1戴差,盡量最多控制在3級以內(nèi)暖释。

不推薦

ul.example {}

.example1 .example2 .example3 .example4 {}

推薦

.example {}

.example1,

.example2 {}

2,非必要的情況下不要使用元素標簽名和ID或class進行組合

不推薦

ul#example {}

div.error {}

推薦

#example {}

.error {}

3嵌器,書寫順序:

同一聲明下的屬性在書寫時谐丢,應按功能進行分組蚓让,并以 Formatting Model(布局方式历极、位置) > Box Model(尺寸) > Typographic(文本相關) > Visual(視覺效果) 的順序書寫衷佃,以提高代碼的可讀性。

解釋:

Formatting Model 相關屬性包括:position / top / right / bottom / left / float / display / overflow 等

Box Model 相關屬性包括:border / margin / padding / width / height 等

Typographic 相關屬性包括:font / line-height / text-align / word-wrap 等

Visual 相關屬性包括:background / color / transition / list-style 等

另外锄列,如果包含 content 屬性邻邮,應放在最前面克婶。

4,屬性簡寫:

在可以使用縮寫的情況下鸭蛙,盡量使用屬性縮寫筋岛。

推薦

.post {

font: 12px/1.5 arial, sans-serif;

}

不推薦

.post {

font-family: arial, sans-serif;

font-size: 12px;

line-height: 1.5;

}

使用 border / margin / padding 等縮寫時睁宰,應注意隱含值對實際數(shù)值的影響,確實需要設置多個方向的值時才使用縮寫勋陪。

border / margin / padding 等縮寫會同時設置多個屬性的值诅愚,容易覆蓋不需要覆蓋的設定劫映。如某些方向需要繼承其他聲明的值,則應該分開設置雌桑。

5祖今,0和單位:

省略“0”值后面的單位拣技。不要在0值后面使用單位膏斤,除非有值邪驮。

不推薦

padding-bottom: 0px;

margin: 0em;

推薦

padding-bottom: 0;

margin: 0;

6毅访,十六進制表示法:

在可能的情況下,使用3個字符的十六進制表示法蟆融。

顏色值允許這樣表示磷斧,3個字符的十六進制表示法更簡短。始終使用小寫的十六進制數(shù)字冕末。

不推薦

color: #FF33AA;

推薦

color: #f3a;

7侣颂,帶前綴的屬性:

當使用特定廠商的帶有前綴的屬性時憔晒,通過縮進的方式,讓每個屬性的值在垂直方向對齊嘹屯,這樣便于多行編輯从撼。

.selector {

-webkit-box-shadow: 0 1px 2px rgba(0,0,0,.15);

box-shadow: 0 1px 2px rgba(0,0,0,.15);

}

8低零,!important:

盡量不使用 !important 聲明啃奴。當需要強制指定樣式且不允許任何場景覆蓋時雄妥,通過標簽內(nèi)聯(lián)和 !important 定義樣式依溯。

CSS樣式與文件命名參考表:

CSS樣式命名說明

wrapper頁面外圍控制整體布局寬度container容器,用于最外層layout布局header頁頭部分

footer頁腳部分誓沸、nav主導航壹粟、subnav二級導航趁仙、menu菜單、submenu子菜單干奢、sidebar側欄main頁面盏袄、主體tag、標簽msg 逛尚、message提示信息刁愿、tips小技巧、vote投票铣口、friendlink友情連接脑题、title標題、summary摘要他炊、loginbar登錄條掏熬、searchInput搜索輸入框秒梅、hot熱門熱點捆蜀、search搜索疮丛、search-output搜索輸出和搜索結果相似幔嫂、search-bar搜索條、search-results搜索結果copyright版權信息誊薄、branding商標logo網(wǎng)站LOGO標志履恩、joinus加入我們、partner合作伙伴service服務呢蔫、regsiter注冊切心、arr/arrow箭頭、guild指南片吊、sitemap網(wǎng)站地圖绽昏、list列表俏脊、homepage首頁全谤、subpage二級頁面子頁面、tool, toolbar工具條爷贫、drop下拉认然、dorpmenu下拉菜單、status狀態(tài)漫萄、scroll滾動卷员、.tab標簽頁、.left .right .center居左卷胯、中子刮、右、news新聞窑睁、download下載挺峡、banner廣告條(頂部廣告條)、products產(chǎn)品担钮、products-prices產(chǎn)品價格products-description產(chǎn)品描述橱赠、products-review產(chǎn)品評論、editor-review編輯評論箫津、news-release最新產(chǎn)品狭姨、publisher生產(chǎn)商、screenshot縮略圖苏遥、faqs常見問題饼拍、keyword關鍵詞、blog博客田炭、forum論壇

CSS文件命名說明base.css基本共用layout.css布局师抄,版面master.css或style.css主要的module.css模塊themes.css主題columns.css專欄font.css文字、字體form.css表單

JavaScript規(guī)范:

1教硫,文件命名可讀性強:

文件夾叨吮、文件的命名與命名空間應能代表代碼功能辆布,可讀性強。

2茶鉴,嵌入規(guī)則:

Javascript代碼應該盡量放在.js格式的文件中锋玲,需要調(diào)用的時候在頁面中以的形式包含進來。Javascript代碼若不是該頁面專用的涵叮,則應盡量避免在頁面中直接編寫Javascript代碼惭蹂。

3,全局命名空間無法與IIFE:

總是將代碼包裹成一個IIFE(Immediately-Invoked Function Expression)割粮,用以創(chuàng)建獨立隔絕的定義域剿干。這一舉措可防止全局命名空間被污染。

IIFE 還可確保代碼不會輕易被其它全局命名空間里的代碼所修改(第三方庫穆刻,window 引用置尔,被覆蓋的未定義的關鍵字等等)。

// 不推薦

var x = 10,

y = 100;

console.log(window.x + ' ' + window.y);

// 推薦

(function(log, w, undefined){

var x = 10,

y = 100;

console.log((w.x === undefined) + ' ' + (w.y === undefined));

}(window.console.log, window));

無論何時氢伟,想要創(chuàng)建一個新的封閉的定義域榜轿,那就用 IIFE。它不僅避免了干擾朵锣,也使得內(nèi)存在執(zhí)行完后立即釋放谬盐。

所有腳本文件建議都從 IIFE 開始。

立即執(zhí)行的函數(shù)表達式的執(zhí)行括號應該寫在外包括號內(nèi)诚些。雖然寫在內(nèi)還是寫在外都是有效的飞傀,但寫在內(nèi)使得整個表達式看起來更像一個整體,因此推薦這么做诬烹。

不推薦

(function(){})();

推薦

(function(){}());

如果想引用全局變量或者是外層 IIFE 的變量砸烦,可以通過下列方式傳參:

(function($, w, d){

$(function() {

w.alert(d.querySelectorAll('div').length);

});

}(jQuery, window, document));

4,引號:

統(tǒng)一使用單引號(‘’)绞吁,不使用雙引號(“”)幢痘。這在創(chuàng)建 HTML 字符串非常有好處:

var msg = 'This is some HTML';

5,變量生命:

總是使用 var 來聲明變量家破。如不指定 var颜说,變量將被隱式地聲明為全局變量,這將對變量難以控制汰聋。如果沒有聲明门粪,變量處于什么定義域就變得不清(可以是在 Document 或 Window 中,也可以很容易地進入本地定義域)烹困。所以玄妈,請總是使用 var 來聲明變量。駝峰命名法。

不推薦

x = 10;

y = 100;

推薦

var x = 10,

y = 100;

6措近,數(shù)組和對象字面量:

用數(shù)組和對象字面量來代替數(shù)組和對象構造器。數(shù)組構造器很容易讓人在它的參數(shù)上犯錯女淑。

不推薦

var a1 = new Array(x1, x2, x3);

var a2 = new Array(x1, x2);

var a3 = new Array(x1);

var a4 = new Array();

正因如此瞭郑,如果將代碼傳參從兩個變?yōu)橐粋€,那數(shù)組很有可能發(fā)生意料不到的長度變化鸭你。為避免此類怪異狀況屈张,請總是采用更多可讀的數(shù)組字面量。

推薦

var a = [x1, x2, x3];

var a2 = [x1, x2];

var a3 = [x1];

var a4 = [];

對象構造器不會有類似的問題袱巨,但是為了可讀性和統(tǒng)一性阁谆,我們應該使用對象字面量。

不推薦

var o = new Object();

var o2 = new Object();

o2.a = 0;

o2.b = 1;

o2.c = 2;

o2['strange key'] = 3;

推薦

var o = {};

var o2 = {

a: 0,

b: 1,

c: 2,

'strange key': 3

};

7愉老,函數(shù)聲明:

函數(shù)應在調(diào)用前進行聲明场绿,內(nèi)部函數(shù)應在 var 聲明內(nèi)部變量的語句之后聲明,可以清晰地表明內(nèi)部變量和內(nèi)部函數(shù)的作用域嫉入。

此外焰盗,函數(shù)名緊接左括號'('之間,而右括號')'和后面的'{'之間要有個空格咒林,以清楚地顯示函數(shù)名以其參數(shù)部分熬拒,和函數(shù)體的開始。若函數(shù)為匿名 / 無名函數(shù)垫竞,則 function 關鍵字和左括號'('之間要留空格澎粟,否則可能誤認為該函數(shù)的函數(shù)名為 function。

var innerA = 1;

function outF () {

var innerA = 2;

function _inf () {

alert(‘valueA=’+innerA);

}

_inF();

}

outF ();

_inF();

8欢瞪,語句塊內(nèi)的函數(shù)聲明:

切勿在語句塊內(nèi)聲明函數(shù)活烙,在 ECMAScript 5 的嚴格模式下,這是不合法的遣鼓。函數(shù)聲明應該在定義域的頂層瓣颅。但在語句塊內(nèi)可將函數(shù)申明轉化為函數(shù)表達式賦值給變量。

不推薦

if (x) {

function foo() {}

}

推薦

if (x) {

var foo = function() {};

}

9譬正,流程控制:

if宫补、while、for曾我、do語句的執(zhí)行體總是用"{"和"}"括起來粉怕,即使在其結構體內(nèi)只有一條語句

if (s==100) {

alert('shit!');

}

不要使用 switch。switch 在所有的編程語言中都是個非常錯誤的難以控制的語句抒巢,建議用 if else 來替換它贫贝。

10,操作符:

(1)三元條件判斷(if 的快捷方法)

用三元操作符分配或返回語句。在比較簡單的情況下使用稚晚,避免在復雜的情況下使用崇堵。沒人愿意用 10 行三元操作符把自己的腦子繞暈。

不推薦

if(x === 10) {

return 'valid';

} else {

return 'invalid';

}

推薦

return x === 10 ? 'valid' : 'invalid';

11客燕,注釋:

(1)文件注釋

文件注釋要標明作者鸳劳、文件版本、創(chuàng)建/修改時間也搓、重大版本修改記錄

函數(shù)描述

文件版本赏廓、創(chuàng)建或者修改時間、功能傍妒、作者

/**

* @file Image.js

* @description 功能詳細描述

*/

?函數(shù)或者類等都要添加頭描述

/**

* 簡述

*

* 功能詳細描述

*

* @param arg1 參數(shù)1

* @param arg2 參數(shù)2幔摸,默認為0

* @return 看xxx是否成功

*/

function fooFunction (arg1, arg2) {

}

(2)操作注釋

單行注釋,寫在代碼上面

多行注釋

/*

* 注釋操作說明

*/

for( var i = 0; i < obj.lenght; i++) {

}????

?著作權歸作者所有,轉載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末颤练,一起剝皮案震驚了整個濱河市既忆,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌嗦玖,老刑警劉巖尿贫,帶你破解...
    沈念sama閱讀 216,496評論 6 501
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異踏揣,居然都是意外死亡庆亡,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,407評論 3 392
  • 文/潘曉璐 我一進店門捞稿,熙熙樓的掌柜王于貴愁眉苦臉地迎上來又谋,“玉大人,你說我怎么就攤上這事娱局≌煤ィ” “怎么了?”我有些...
    開封第一講書人閱讀 162,632評論 0 353
  • 文/不壞的土叔 我叫張陵衰齐,是天一觀的道長任斋。 經(jīng)常有香客問我,道長耻涛,這世上最難降的妖魔是什么废酷? 我笑而不...
    開封第一講書人閱讀 58,180評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮抹缕,結果婚禮上澈蟆,老公的妹妹穿的比我還像新娘。我一直安慰自己卓研,他們只是感情好趴俘,可當我...
    茶點故事閱讀 67,198評論 6 388
  • 文/花漫 我一把揭開白布睹簇。 她就那樣靜靜地躺著,像睡著了一般寥闪。 火紅的嫁衣襯著肌膚如雪太惠。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,165評論 1 299
  • 那天疲憋,我揣著相機與錄音凿渊,去河邊找鬼。 笑死柜某,一個胖子當著我的面吹牛,可吹牛的內(nèi)容都是我干的敛纲。 我是一名探鬼主播喂击,決...
    沈念sama閱讀 40,052評論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼淤翔!你這毒婦竟也來了翰绊?” 一聲冷哼從身側響起,我...
    開封第一講書人閱讀 38,910評論 0 274
  • 序言:老撾萬榮一對情侶失蹤旁壮,失蹤者是張志新(化名)和其女友劉穎监嗜,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體抡谐,經(jīng)...
    沈念sama閱讀 45,324評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡裁奇,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,542評論 2 332
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了麦撵。 大學時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片刽肠。...
    茶點故事閱讀 39,711評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖免胃,靈堂內(nèi)的尸體忽然破棺而出音五,到底是詐尸還是另有隱情,我是刑警寧澤羔沙,帶...
    沈念sama閱讀 35,424評論 5 343
  • 正文 年R本政府宣布躺涝,位于F島的核電站,受9級特大地震影響扼雏,放射性物質發(fā)生泄漏坚嗜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,017評論 3 326
  • 文/蒙蒙 一诗充、第九天 我趴在偏房一處隱蔽的房頂上張望惶傻。 院中可真熱鬧,春花似錦其障、人聲如沸银室。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,668評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽蜈敢。三九已至辜荠,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間抓狭,已是汗流浹背伯病。 一陣腳步聲響...
    開封第一講書人閱讀 32,823評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留否过,地道東北人午笛。 一個月前我還...
    沈念sama閱讀 47,722評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像苗桂,于是被迫代替她去往敵國和親药磺。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 44,611評論 2 353

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

  • 原文: https://github.com/ecomfe/spec/blob/master/javascript...
    zock閱讀 3,371評論 2 36
  • 第2章 基本語法 2.1 概述 基本句法和變量 語句 JavaScript程序的執(zhí)行單位為行(line)煤伟,也就是一...
    悟名先生閱讀 4,145評論 0 13
  • 第一章 大蛤蟆 天漸漸黑了癌佩,我困在一個小黑屋里,不能出來便锨,門是反鎖的围辙,只有一個小窗戶能隱約看到外面的世界。在這里已...
    新一姬閱讀 301評論 0 2
  • 你是否也有過這樣的經(jīng)歷放案?睡覺之前有千思萬緒姚建,一覺醒來一切照舊。你痛恨自己的不堅持吱殉,卻又無能為力桥胞。我們現(xiàn)在的時間都...
    左耳不聞閱讀 213評論 1 2
  • Q:怎樣回答女生"你喜歡我什么"沥阱? A:哈缎罢,女人總是這樣可愛。但與此同時考杉,也讓男人比較無語策精。你讓他怎么回答才滿意?...
    飄雨桐V閱讀 481評論 0 1