JavaScript學(xué)習(xí)筆記5 一些應(yīng)該注意的細(xì)節(jié)

前言

今天是九月的第一天,祖國(guó)的花朵開學(xué)了咱台,我也的加倍努力多學(xué)點(diǎn)東西了络拌。

不求能多牛逼,只求自己能每天進(jìn)步一點(diǎn)回溺,不管是那方面的春贸,能看到自己的成長(zhǎng)是最幸福的事情,才不負(fù)自己這么多年吃的飯馅而!

格式

我初學(xué)JS祥诽,網(wǎng)上查閱了一些資料譬圣,準(zhǔn)備著手從JavaScript_DOM編程藝術(shù)第二版這本書入手瓮恭,期間還會(huì)用喜馬拉雅聽聽陪你讀書(JavaScript WEB前端培訓(xùn)教程)

我印象最深刻的是厘熟,js是一個(gè)從上到下的弱類型語言屯蹦,所以格式特別重要。比如語句后面記得加分號(hào)绳姨,變量命名要統(tǒng)一格式登澜、嚴(yán)格區(qū)分大小寫、必要的地方加上備注等等飘庄。

一個(gè)好的編程習(xí)慣可以讓你的代碼更易讀脑蠕,更好的融入團(tuán)隊(duì)中,所以必須嚴(yán)格的要求自己的編寫習(xí)慣跪削。

向后兼容

不同的瀏覽器對(duì)js的支持程度不一樣谴仙,絕對(duì)多數(shù)的瀏覽器都或多或少的支持js,而絕對(duì)多數(shù)的現(xiàn)代瀏覽器對(duì)DOM的支持都非常不錯(cuò)碾盐。但比較老的瀏覽器很可能不能理解DOM提供的方法和屬性晃跺。
這點(diǎn)應(yīng)該和CSS在不同瀏覽器中兼容性的問題類似

盡量減少DOM的訪問次數(shù)

訪問DOM的方式對(duì)腳本的性能影響非常大,如:

if(document.getElementsByTagName("a").length>0){
var links = document.getElementsByTagName("a");
for(var i=0; i<links.length;i++){
        //...
    }
}

這段腳本首先取得頁面所有的<a>標(biāo)簽毫玖,然后檢查它們的個(gè)數(shù)是不是大于0掀虎。然后如果大于0,它會(huì)再次取得所有<a>標(biāo)簽付枫,然后循環(huán)到不符合條件為止烹玉。

雖然這段代碼可以運(yùn)行,但它不是最優(yōu)的選擇阐滩。不管什么時(shí)候二打,只要是查詢DOM中的某些元素,瀏覽器都會(huì)對(duì)整個(gè)頁面的DOM樹進(jìn)行查詢叶眉。這段腳本中用了兩次getElementsByTagName的方法來查詢址儒,顯然不是最優(yōu)的選擇芹枷。更好的辦法是把第一次搜索的結(jié)果保存到一個(gè)變量里,然后在循環(huán)里重用這個(gè)結(jié)果莲趣,如:

var links = document.getElementsByTagName("a");
if(links.length>0){
    for(var i=0;i<links.length;i++){
        //...
    }       
}

這樣鸳慈,腳本功能沒有變化,但DOM次數(shù)由兩次變?yōu)榱艘淮涡 T俦热缬幸粋€(gè)函數(shù)是檢查每個(gè)鏈接中的popup類走芋,而另一個(gè)函數(shù)是檢查每個(gè)鏈接中的hover類,那同樣會(huì)造成DOM浪費(fèi)潘鲫。在多個(gè)函數(shù)都會(huì)取得一組類似元素的情況下翁逞,可以考慮重寫代碼,把搜索結(jié)果放置到一個(gè)全局變量里溉仑,或者把一組元素直接以參數(shù)的形式傳遞給函數(shù)挖函。

另一個(gè)值得注意的地方是在寫HTML的時(shí)候,盡量減少文檔中標(biāo)簽的數(shù)量浊竟,過多不必要的元素只會(huì)增加DOM書的規(guī)模怨喘,延遲DOM查找元素的時(shí)間。
如:

<p><a href="#"><span style="color: red;">我是一個(gè)紅色的超鏈接</span></a></p>
//上面這段代碼只是想得到一個(gè)紅色的鏈接振定,但卻使用了三個(gè)元素必怜,我們可以直接簡(jiǎn)化成下面這種形式

<a href="#" style="color: red;">我是一個(gè)紅色的超鏈接</a>
//使用一個(gè)<a>元素就達(dá)到了想要的效果

合并和放置腳本

使用腳本,最佳的方式是使用外部腳本文件后频,與HTML分離開梳庆,這樣比較容易維護(hù)修改。現(xiàn)在的瀏覽器會(huì)對(duì)頁面中的css和腳本文件進(jìn)行緩存卑惜,多個(gè)頁面如果使用的是相同的文件時(shí)膏执,瀏覽器就會(huì)自動(dòng)重用緩存的相同的文件。所以残揉,如果一個(gè)腳本文件用在一個(gè)網(wǎng)站的不用頁面時(shí)胧后,請(qǐng)調(diào)用同一個(gè)文件名,如:

<script src="function.js" type="text/javascript" charset="utf-8"></script>

//一樣的腳本在不同頁面只需要調(diào)用同一個(gè)文件即可抱环,以下的方式不可取
<script src="functionA.js" type="text/javascript" charset="utf-8"></script>
<script src="functionB.js" type="text/javascript" charset="utf-8"></script>
<script src="functionC.js" type="text/javascript" charset="utf-8"></script>

放置腳本的位置也是有講究的壳快,我以前第一次使用Bootstrap的時(shí)候就好奇,為什么js腳本要放置在</body>前镇草,而不是包含在<head></head>中眶痰。

因?yàn)閖s腳本在加載的時(shí)候是不允許同時(shí)加載其他文件的(比如圖像和其他腳本),所以放在頭部可能會(huì)出現(xiàn)頁面刷新后前面一段時(shí)候頁面是空白的梯啤。
正確的方式是放在文檔</body>前竖伯,會(huì)使提升頁面載速度,但可能會(huì)出現(xiàn)短暫的頁面變形的錯(cuò)誤(幻燈片、滾動(dòng)條等由為明顯)七婴,但這個(gè)根據(jù)網(wǎng)速因人而異祟偷,一般情況的網(wǎng)速都是不容易察覺的,但這個(gè)確實(shí)存在打厘,因?yàn)閖s腳本最后才讀取修肠,而這個(gè)時(shí)候你的幻燈片里的圖已經(jīng)下載完畢等著js腳本去控制。

壓縮腳本

這個(gè)一般出現(xiàn)在腳本編寫調(diào)試完畢后才做的工序户盯,它是把腳本中不必要的字節(jié)給去掉(空格嵌施、換行、注釋)莽鸭,達(dá)到腳本文件小巧吗伤,加載速度快的目的。同樣是Bootstrap的例子:


其中有兩個(gè)js硫眨,一個(gè)為68KB足淆,一個(gè)為36KB,但他們的功能都是一樣的捺球。
同理css也是可以進(jìn)行壓縮的缸浦。



我還見過HTML也壓縮的夕冲。

不過氮兵,這個(gè)工序一般是調(diào)試和修改完畢后再做,并且需備份好源文件歹鱼,保證以后修改的時(shí)候方便泣栈。

下面這是pdf書里的原話,工具現(xiàn)在已經(jīng)不局限于這些了弥姻,百度自行搜索南片,有更多更好用的!


最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末庭敦,一起剝皮案震驚了整個(gè)濱河市疼进,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌秧廉,老刑警劉巖伞广,帶你破解...
    沈念sama閱讀 219,039評(píng)論 6 508
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場(chǎng)離奇詭異疼电,居然都是意外死亡嚼锄,警方通過查閱死者的電腦和手機(jī),發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,426評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門蔽豺,熙熙樓的掌柜王于貴愁眉苦臉地迎上來区丑,“玉大人,你說我怎么就攤上這事〔捉模” “怎么了可霎?”我有些...
    開封第一講書人閱讀 165,417評(píng)論 0 356
  • 文/不壞的土叔 我叫張陵,是天一觀的道長(zhǎng)宴杀。 經(jīng)常有香客問我啥纸,道長(zhǎng),這世上最難降的妖魔是什么婴氮? 我笑而不...
    開封第一講書人閱讀 58,868評(píng)論 1 295
  • 正文 為了忘掉前任斯棒,我火速辦了婚禮,結(jié)果婚禮上主经,老公的妹妹穿的比我還像新娘荣暮。我一直安慰自己,他們只是感情好罩驻,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,892評(píng)論 6 392
  • 文/花漫 我一把揭開白布穗酥。 她就那樣靜靜地躺著,像睡著了一般。 火紅的嫁衣襯著肌膚如雪殖蚕。 梳的紋絲不亂的頭發(fā)上猿棉,一...
    開封第一講書人閱讀 51,692評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音抽高,去河邊找鬼。 笑死透绩,一個(gè)胖子當(dāng)著我的面吹牛翘骂,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播帚豪,決...
    沈念sama閱讀 40,416評(píng)論 3 419
  • 文/蒼蘭香墨 我猛地睜開眼碳竟,長(zhǎng)吁一口氣:“原來是場(chǎng)噩夢(mèng)啊……” “哼!你這毒婦竟也來了狸臣?” 一聲冷哼從身側(cè)響起莹桅,我...
    開封第一講書人閱讀 39,326評(píng)論 0 276
  • 序言:老撾萬榮一對(duì)情侶失蹤,失蹤者是張志新(化名)和其女友劉穎烛亦,沒想到半個(gè)月后诈泼,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體,經(jīng)...
    沈念sama閱讀 45,782評(píng)論 1 316
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡此洲,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,957評(píng)論 3 337
  • 正文 我和宋清朗相戀三年厂汗,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片呜师。...
    茶點(diǎn)故事閱讀 40,102評(píng)論 1 350
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡娶桦,死狀恐怖,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情衷畦,我是刑警寧澤栗涂,帶...
    沈念sama閱讀 35,790評(píng)論 5 346
  • 正文 年R本政府宣布,位于F島的核電站祈争,受9級(jí)特大地震影響斤程,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜菩混,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,442評(píng)論 3 331
  • 文/蒙蒙 一忿墅、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧沮峡,春花似錦疚脐、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,996評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至疟游,卻和暖如春呼畸,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背颁虐。 一陣腳步聲響...
    開封第一講書人閱讀 33,113評(píng)論 1 272
  • 我被黑心中介騙來泰國(guó)打工蛮原, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人聪廉。 一個(gè)月前我還...
    沈念sama閱讀 48,332評(píng)論 3 373
  • 正文 我出身青樓瞬痘,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親板熊。 傳聞我的和親對(duì)象是個(gè)殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 45,044評(píng)論 2 355

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

  • 問答題47 /72 常見瀏覽器兼容性問題與解決方案察绷? 參考答案 (1)瀏覽器兼容問題一:不同瀏覽器的標(biāo)簽?zāi)J(rèn)的外補(bǔ)...
    _Yfling閱讀 13,754評(píng)論 1 92
  • 前言 歸根結(jié)底干签,代碼都是思想和概念的體現(xiàn)。沒人能把一種程序設(shè)計(jì)語言的所有語法和關(guān)鍵字都記住拆撼,可以查閱參考書來解決容劳。...
    朱細(xì)細(xì)閱讀 2,937評(píng)論 4 14
  • 一:在制作一個(gè)Web應(yīng)用或Web站點(diǎn)的過程中,你是如何考慮他的UI闸度、安全性竭贩、高性能、SEO莺禁、可維護(hù)性以及技術(shù)因素的...
    Arno_z閱讀 1,167評(píng)論 0 1
  • 傳統(tǒng)行業(yè)產(chǎn)品留量,以及互聯(lián)網(wǎng)產(chǎn)品。都是在解決實(shí)際生活的需求,在一定的應(yīng)用場(chǎng)景中楼熄,會(huì)有不同的產(chǎn)品去產(chǎn)生它不可取代的用戶體...
    斯文是K先生閱讀 227評(píng)論 0 5
  • 這是一個(gè)故事忆绰。 某日,某·大墨鏡粗金鏈嚎善瘢魂衫大褲衩·男趾高氣揚(yáng)地走出機(jī)場(chǎng)错敢,剛出VIP通道,某男拿出某品牌還未出的新...
    黎錦棠閱讀 402評(píng)論 0 0