溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊(cè)×
其他方式登錄
點(diǎn)擊 登錄注冊(cè) 即表示同意《億速云用戶服務(wù)條款》

JavaScript性能優(yōu)化的方法有哪些

發(fā)布時(shí)間:2022-03-03 10:29:01 來(lái)源:億速云 閱讀:162 作者:iii 欄目:web開(kāi)發(fā)

這篇文章主要講解了“JavaScript性能優(yōu)化的方法有哪些”,文中的講解內(nèi)容簡(jiǎn)單清晰,易于學(xué)習(xí)與理解,下面請(qǐng)大家跟著小編的思路慢慢深入,一起來(lái)研究和學(xué)習(xí)“JavaScript性能優(yōu)化的方法有哪些”吧!

典型的js性能挑戰(zhàn)  

有許多因素會(huì)影響JavaScript的性能。 以下是與js性能相關(guān)的常見(jiàn)問(wèn)題:  

事件處理質(zhì)量差:  

正確使用事件處理程序可以通過(guò)減少調(diào)用堆棧的深度來(lái)提高JavaScript的性能。  

跟蹤所有事件處理程序是很重要的,這樣處理程序就不會(huì)在您不知道的情況下執(zhí)行。  

無(wú)組織的代碼  

JavaScript是松散的,這有利有弊。  

詞匯構(gòu)造的分子集允許開(kāi)發(fā)人員實(shí)現(xiàn)很多功能。 然而,代碼中缺乏組織可能導(dǎo)致資源分配不足。  

這在很大程度上阻礙了JavaScript的性能。 理解ECMA對(duì)于理解JavaScript非常重要。  

太多的依賴  

有時(shí),JavaScript依賴關(guān)系管理得很差或過(guò)度。 當(dāng)這種情況發(fā)生時(shí),應(yīng)用的性能將受到負(fù)面影響。  

例如,帶寬受限的移動(dòng)用戶將需要等待更長(zhǎng)的時(shí)間來(lái)渲染對(duì)象。  

低效的迭代  

迭代過(guò)程需要很長(zhǎng)時(shí)間。 然而,這也是有益的。 較長(zhǎng)的處理時(shí)間為JavaScript優(yōu)化創(chuàng)建了一個(gè)完美的起點(diǎn)。 當(dāng)您修復(fù)代碼中不相關(guān)的調(diào)用或循環(huán)時(shí),您的JavaScript性能將大大提高。  

js性能優(yōu)化建議 

修剪HTML  

JavaScript HTML很復(fù)雜,在查詢時(shí)間、查詢和修改DOM對(duì)象方面起著至關(guān)重要的作用。  

當(dāng)你把應(yīng)用程序的HTML切成兩半時(shí),DOM的速度可能會(huì)翻倍。 這可能很困難,但是通過(guò)丟棄像<div>和<span>這樣的標(biāo)簽是可能的。  

批處理DOM更改  

批處理DOM轉(zhuǎn)換,以防止重復(fù)出現(xiàn)屏幕渲染。 當(dāng)創(chuàng)建樣式更改時(shí),一次完成所有的更改,而不是對(duì)每個(gè)樣式單獨(dú)應(yīng)用更改。  

學(xué)習(xí)異步編程的方法  

JavaScript應(yīng)用程序需要對(duì)大量api進(jìn)行多次內(nèi)部調(diào)用來(lái)獲取數(shù)據(jù)。  

每個(gè)函數(shù)都需要中間件,因?yàn)镴avaScript是單線程的。  

同步組件有時(shí)會(huì)鎖定整個(gè)應(yīng)用程序。 JavaScript使用async.js管理異步代碼。  

異步代碼不會(huì)阻塞線程。 相反,威脅將被硬塞到事件隊(duì)列中,該事件隊(duì)列在執(zhí)行其他代碼之后觸發(fā)。  

使用JavaScript異步特性,可能會(huì)無(wú)意中利用外部庫(kù)來(lái)恢復(fù)異步干擾調(diào)用。  

這會(huì)降低JavaScript的性能。 相反,應(yīng)該在代碼中使用異步api,尤其是在關(guān)鍵的性能部分。  

使用gzip壓縮  

JavaScript文件可能非常龐大。 利用GZip來(lái)解壓和壓縮文件。 GZip減少延遲時(shí)間,提高應(yīng)用程序性能,并節(jié)省帶寬。 使用GZip,服務(wù)器在將資源發(fā)送到瀏覽器之前對(duì)其進(jìn)行壓縮。  

利用HTTP / 2  

HTTP的最新版本是HTTP/2,它提高了JavaScript的性能,加快了網(wǎng)站的性能。  

HTTP/2利用多路復(fù)用,允許同時(shí)發(fā)送多個(gè)響應(yīng)和請(qǐng)求。 

緩沖DOM  

如果有可滾動(dòng)的div,可以使用一個(gè)緩沖區(qū)來(lái)清除當(dāng)前在視口中不可見(jiàn)的DOM項(xiàng)。 這些技術(shù)節(jié)省了DOM遍歷和內(nèi)存使用。  

限制庫(kù)依賴關(guān)系  

加載時(shí)間會(huì)影響庫(kù)的依賴關(guān)系,所以將利用率保持在最低水平是很重要的。  

利用外部庫(kù)依賴的最好方法是依賴于瀏覽器內(nèi)技術(shù)。  

當(dāng)使用CSS選擇器時(shí),使用Sizzle.js而不是jQuery。 當(dāng)庫(kù)包含單個(gè)特性時(shí),單獨(dú)添加CSS選擇器是至關(guān)重要的。  

保持代碼輕巧  

保持JavaScript代碼緊湊將減少延遲并提高性能。 當(dāng)優(yōu)化JavaScript性能時(shí),問(wèn)問(wèn)自己:  

這個(gè)模塊有真正的需求嗎?  

使用這個(gè)框架的原因是什么?  

開(kāi)銷(xiāo)值嗎?  

有更簡(jiǎn)單的方法嗎?  

通過(guò)將多個(gè)JS文件轉(zhuǎn)換為一個(gè)來(lái)優(yōu)化JavaScript性能。  

感謝各位的閱讀,以上就是“JavaScript性能優(yōu)化的方法有哪些”的內(nèi)容了,經(jīng)過(guò)本文的學(xué)習(xí)后,相信大家對(duì)JavaScript性能優(yōu)化的方法有哪些這一問(wèn)題有了更深刻的體會(huì),具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識(shí)點(diǎn)的文章,歡迎關(guān)注!

向AI問(wèn)一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI