HTML5為我們提供了很多旨在精確描述內(nèi)容的語義元素。確保你可以從它豐富的詞匯中獲益。 你需要理解你正在使用的元素的語義。用一種錯(cuò)誤的方式使用語義元素比保持中立更糟糕。 保持代碼的簡潔。忘記原來的XHTML習(xí)慣。 可訪問性不應(yīng)該是以后再想的事情。提高網(wǎng)站不需要你成為一個(gè)WCAG專家,你完全可以通過修復(fù)一些小問題,從而造成一個(gè)巨大的變化,例如:
當(dāng)定義語言和字符編碼是可選擇的時(shí)候,總是建議在文檔級別同時(shí)聲明,即使它們在你的HTTP標(biāo)頭已經(jīng)詳細(xì)說明。比任何其他字符編碼更偏愛UTF-8。 除非有正當(dāng)理由才能在內(nèi)容前加載腳本,不要阻塞頁面的渲染。如果你的樣式表很重,開頭就孤立那些絕對需要得樣式,并在一個(gè)單獨(dú)的樣式表中推遲二次聲明的加載。兩個(gè)HTTP請求顯然比一個(gè)慢,但是感知速度是最重要的因素。 雖然分號在技術(shù)上是CSS一個(gè)分隔符,但應(yīng)該始終把它作為一個(gè)終止符。 型盒子模型對于整個(gè)文檔而言最好是相同的。全局性的* { box-sizing: border-box; }就非常不錯(cuò),但是不要改變默認(rèn)盒子模型的特定元素,如果可以避免的話。 不要更改元素的默認(rèn)行為,如果可以避免的話。元素盡可能地保持在自然的文檔流中。例如,刪除圖像下方的空格而不改變其默認(rèn)顯示: 同樣,如果可以避免的話,不要關(guān)閉元素流。 在CSS中有許多定位元素的方法,但應(yīng)該盡量限制以下屬性/值。按優(yōu)先順序排列: 最小化緊密耦合到DOM的選擇器。當(dāng)選擇器有多于3個(gè)結(jié)構(gòu)偽類,后代或兄弟選擇器的時(shí)候,考慮添加一個(gè)類到你想匹配的元素。 ![]() 當(dāng)你不需要的時(shí)候避免過載選擇器。 不要讓值和選擇器難以覆蓋。盡量少用id,并避免!important。 覆蓋樣式使得選擇器和調(diào)試變得困難。如果可能的話,避免覆蓋樣式。 不要重復(fù)可以繼承的樣式聲明。 保持代碼的簡潔。使用簡寫屬性,沒有必要的話,要避免使用多個(gè)屬性。 英語表達(dá)優(yōu)于數(shù)學(xué)公式。 果斷地刪除過時(shí)的瀏覽器引擎前綴。如果需要使用的話,可以在標(biāo)準(zhǔn)屬性前插入它們。 視圖轉(zhuǎn)換優(yōu)于動(dòng)畫。除了opacity 和transform,避免動(dòng)畫其他屬性。 可以的話,使用無單位的值。如果使用相對單位,那就用rem 。秒優(yōu)于毫秒。 如果你需要透明度,使用rgba。另外,始終使用十六進(jìn)制格式。 當(dāng)資源很容易用CSS復(fù)制的時(shí)候,避免HTTP請求。 不要使用Hacks。 可讀性,正確性和可表達(dá)性優(yōu)于性能。JavaScript基本上永遠(yuǎn)不會(huì)是你的性能瓶頸。圖像壓縮,網(wǎng)絡(luò)接入和DOM重排來代替優(yōu)化。如果從本文中你只能記住一個(gè)指導(dǎo)原則,那么毫無疑問就是這一條。 盡量保持函數(shù)純潔。理論上,所有函數(shù)都不會(huì)產(chǎn)生副作用,不會(huì)使用外部數(shù)據(jù),并且會(huì)返回新對象,而不是改變現(xiàn)有的對象。 盡可能地依賴本地方法。 如果強(qiáng)制有意義,那么就使用隱式強(qiáng)制。否則就應(yīng)該避免強(qiáng)制。 不要使用循環(huán),因?yàn)樗鼈儠?huì)強(qiáng)迫你使用可變對象。依靠array.prototype 方法。 如果不能避免,或使用array.prototype 方法濫用了,那就使用遞歸。 這里有一個(gè)通用的循環(huán)功能,可以讓遞歸更容易使用。 忘記arguments 對象。余下的參數(shù)往往是一個(gè)更好的選擇,這是因?yàn)椋?/span> 你可以從它的命名中更好地了解函數(shù)需要什么樣的參數(shù) 真實(shí)數(shù)組,更易于使用。 忘掉apply()。使用操作符。 當(dāng)有更慣用的做法時(shí),就不要用bind() 。 沒有必要的話,就不要嵌套函數(shù)。 避免調(diào)用多重嵌套函數(shù)。使用合成函數(shù)來替代。 緩存功能測試,大數(shù)據(jù)結(jié)構(gòu)和任何奢侈的操作。 const 優(yōu)于let ,let 優(yōu)于var。 IIFE 和return 語句優(yōu)于if, else if,else和switch語句。 如果可以的話,避免for…in。 在對象有合法用例的情況下,map通常是一個(gè)更好,更強(qiáng)大的選擇。 Curry雖然功能強(qiáng)大,但對于許多開發(fā)人員來說是一個(gè)外來的范式。不要濫用,因?yàn)槠湟暻闆r而定的用例相當(dāng)不尋常。 不要用看似聰明的伎倆混淆代碼的意圖。 不要害怕創(chuàng)建小型的,高度可組合的,可重復(fù)使用的函數(shù)。 最小化依賴性。第三方是你不知道的代碼。不要只是因?yàn)閹讉€(gè)可輕易復(fù)制的方法而加載整個(gè)庫: 原文鏈接:http://www./article/full-frontend-guidelines.html |
|