我要投稿 投訴建議

JavaScript的優(yōu)化心得體會(huì)

時(shí)間:2021-03-31 20:39:48 心得體會(huì) 我要投稿

JavaScript的優(yōu)化心得體會(huì)

  性能對(duì)任何編程語(yǔ)言或系統(tǒng)來(lái)說(shuō)都是一個(gè)很重要的問題,對(duì)JavaScript來(lái)說(shuō)更是如此。

JavaScript的優(yōu)化心得體會(huì)

  ● JavaScript代碼是從服務(wù)器原封不動(dòng)地發(fā)送到客戶端的,代碼越大,下載所需的時(shí)間和帶寬越多。

  ● JavaScript在瀏覽器中解釋,而不是編譯好的。

  ● JavaScript代碼通過(guò)DOM API修改HTML頁(yè)面來(lái)與用戶交互。對(duì)JavaScript開發(fā)人員來(lái)說(shuō),這是功能強(qiáng)大的高級(jí)模型,但對(duì)DOM所做的每個(gè)簡(jiǎn)單修改都將導(dǎo)致瀏覽器的頁(yè)面 渲染引擎執(zhí)行一系列復(fù)雜的操作。對(duì)DOM看似細(xì)微的修改常常導(dǎo)致需要占用比預(yù)期的多得多的CPU周期。

  諸如Gmail和基于Ajax的Yahoo! Mail(編寫本書時(shí)仍處于測(cè)試階段)等Web應(yīng)用程序都對(duì)JavaScript性能提出了挑戰(zhàn)。大量的人力被投入到這些Web應(yīng)用程序中,它們?cè)谧钚碌?計(jì)算機(jī)中可能運(yùn)行順暢,但在較舊的計(jì)算機(jī)中可能反應(yīng)遲鈍,而在這些舊計(jì)算機(jī)中運(yùn)行相應(yīng)的桌面應(yīng)用程序沒有任何問題。

  在下一小節(jié)中將介紹在JavaScript中最常見的兩個(gè)性能問題的解決方案。

  3.2.1 縮短JavaScript的下載時(shí)間

  大多數(shù)編程語(yǔ)言要么是編譯型的,要么在代碼安裝的計(jì)算機(jī)中運(yùn)行,或兩者兼而有之。例如,使用諸如Python、PHP或Perl等腳本語(yǔ)言 時(shí),代碼在執(zhí)行前不需要通過(guò)網(wǎng)絡(luò)傳輸,而在本地運(yùn)行。諸如Java等其他語(yǔ)言的代碼被編譯成二進(jìn)制文件,可在執(zhí)行前通過(guò)網(wǎng)絡(luò)傳輸。考慮到這種情況,采用了 大量措施以使二進(jìn)制格式更加緊湊。

  JavaScript不屬于上述任何一種情況,其源代碼及用到的庫(kù)將被瀏覽器按原樣下載。因此,JavaScript代碼的`總體大小以及如何 將代碼打包為文件對(duì)頁(yè)面性能的影響巨大,這在剛開始編碼時(shí)可能無(wú)關(guān)緊要,但隨著編寫的代碼和使用的庫(kù)越來(lái)越多,很快將導(dǎo)致下載頁(yè)面使用的 JavaScript代碼時(shí)需要相當(dāng)長(zhǎng)的時(shí)間。

  為最大限度地縮短下載時(shí)間,應(yīng)這樣做:

  ● 除非每個(gè)頁(yè)面有不同的JavaScript,否則不要直接將JavaScript代碼放在HTML中,而在HTML中引用JavaScript文件。如果一定要在頁(yè)面中包含JavaScript,這樣的代碼不能太長(zhǎng)。

  ● 減少在頁(yè)面中包含的JavaScript文件數(shù)。不需要走極端,將所有代碼放到一個(gè)文件中。包含不超過(guò)5個(gè)文件是可行的,但如果包含超過(guò)20個(gè)文件就要三 思而行。這些數(shù)字只是象征性的,如果這是個(gè)問題,應(yīng)進(jìn)行測(cè)試看看在單個(gè)頁(yè)面中使用多少文件將影響網(wǎng)站的性能。

  ● 減少使用的庫(kù)。如果使用大量不同來(lái)源的庫(kù),它們的有些代碼很可能是重復(fù)的。例如,每個(gè)庫(kù)都可能包含處理DOM事件的代碼,這是一種浪費(fèi),因?yàn)檫@些代碼可以 共享。選擇一個(gè)能夠解決大量問題且模塊化的庫(kù),這樣可只包含所需的子集。使用來(lái)自一個(gè)主要庫(kù)的代碼還有其他好處:將減少依賴關(guān)系,從而降低不兼容的可能 性;升級(jí)到新版本更容易;通常來(lái)說(shuō),大型庫(kù)將獲得更大社區(qū)的支持,因此更新更頻繁,新特性更多。本章后面的內(nèi)容將更詳細(xì)地介紹JavaScript庫(kù)。

  很多庫(kù)都會(huì)發(fā)布其代碼的兩個(gè)版本:完整版和精簡(jiǎn)版。

  ● 完整版適合用于閱讀和修改庫(kù)的代碼。它包含縮進(jìn)和注釋,對(duì)開發(fā)人員來(lái)說(shuō)可讀性更高。

  ● 精簡(jiǎn)版適合用于部署網(wǎng)站。這種版本是基于完整版自動(dòng)創(chuàng)建的:刪除了注釋和縮進(jìn);通常所有代碼位于一行中;有時(shí)候不暴露的變量被重命名為很短(而晦澀)的名稱。

  部署網(wǎng)站時(shí),務(wù)必使用精簡(jiǎn)版。根據(jù)自己編寫的代碼長(zhǎng)度,可能要使用工具創(chuàng)建JavaScript文件的精簡(jiǎn)版。這樣的工具有很多,其中包括開源(GPL)的ECMAScript Cruncher(ESC)。

  3.2.2 最大限度地減少DOM更新

  為完成任何有趣的工作,代碼必須修改DOM。然而,修改DOM的開銷非常高。顯然,為處理修改頁(yè)面內(nèi)容的DOM API調(diào)用,瀏覽器必須做大量工作。更令人驚訝的是,調(diào)用不修改頁(yè)面的方法(如注冊(cè))可能非常慢。

  另外,請(qǐng)注意遍歷大量DOM對(duì)象的代碼,如遍歷documet.all以查找特定元素的代碼或document. getElementByName()。這些代碼的執(zhí)行時(shí)間將隨頁(yè)面的增大而增長(zhǎng)。

【JavaScript的優(yōu)化心得體會(huì)】相關(guān)文章:

關(guān)于javascript的心得體會(huì)03-02

Oracle優(yōu)化的心得體會(huì)03-31

企業(yè)站優(yōu)化心得體會(huì)04-22

優(yōu)化發(fā)展環(huán)境心得體會(huì)03-03

優(yōu)化課堂教學(xué)設(shè)計(jì)心得體會(huì)03-14

優(yōu)化經(jīng)濟(jì)的標(biāo)語(yǔ)03-30

優(yōu)化團(tuán)體作文05-22

優(yōu)化閱讀訓(xùn)練指導(dǎo)04-21

優(yōu)化情緒,釋放壓力03-21

真人一级一级97一片a毛片√91,91精品丝袜无码人妻一区,亚国产成人精品久久久,亚洲色成人一区二区三区
亚洲乱码成熟在线视频播放 | 偷偷做久久久久网 | 亚洲欧洲国产日产综合 | 亚洲乱码AV中文一区二区 | 中文字幕婷婷在线观看 | 视频人妖一区二区 |