JavaScript 可以提供高度交互的網(wǎng)站,以 HTML 單獨(dú)無法做到的方式積極吸引用戶。但是,增加的參與度會帶來性能成本,如果允許失控,可能會對網(wǎng)站的可用性產(chǎn)生負(fù)面影響。想要掌握J(rèn)avaScript更多的編程技能和知識,建議參加web前端培訓(xùn),課程實(shí)時(shí)更新,緊跟企業(yè)需求,讓你輕松找到工作。
如果你的網(wǎng)站速度很慢,并且認(rèn)為頁面中嵌入的邏輯可能是原因,那么你可以使用以下五個(gè) JavaScript 性能優(yōu)化技巧來為用戶加快速度。
1. 減少onReady事件的數(shù)量
一旦加載了 HTML 頁面并應(yīng)用了所有 CSS 選擇器,就會觸發(fā) onReady 事件。通常,開發(fā)人員會在此處放置初始化頁面組件和啟動各種 JavaScript 函數(shù)所需的邏輯。
然而,隨著時(shí)間的推移,開發(fā)人員傾向于向頁面添加越來越多的 onReady 事件。在故障排除例程中,通常會添加 onReady 事件來解決問題,但不會在解決問題時(shí)將其刪除。其他時(shí)候,與給定 Web 組件關(guān)聯(lián)的 HTML 會從頁面中刪除,但相應(yīng)的 onReady 事件不會,這會導(dǎo)致多余的 JavaScript 不必要地消耗時(shí)鐘周期。此外,onReady 事件通常被編碼到一個(gè)通用的 JavaScript 文件中,該文件在每次頁面加載時(shí)都會運(yùn)行,即使該函數(shù)僅在少數(shù)幾個(gè)頁面上需要。
2. 使用 let not var
當(dāng)使用 var 關(guān)鍵字聲明 JavaScript 變量時(shí),它在整個(gè)頁面的全局范圍內(nèi),并在頁面的整個(gè)生命周期中維護(hù)在內(nèi)存中。但是,當(dāng)使用 let 關(guān)鍵字聲明變量時(shí),將應(yīng)用塊范圍。因此,該變量會在塊執(zhí)行后從內(nèi)存中刪除。更多關(guān)于JavaScript 性能優(yōu)化技巧的相關(guān)知識,可以考慮通過參加web前端培訓(xùn)來學(xué)習(xí),有專業(yè)老師指導(dǎo),有全面系統(tǒng)的課程,學(xué)起來又快又輕松。
如果 Ajax 響應(yīng)、JSON 數(shù)據(jù)或 XML 等長文本字符串保存在全局變量中,瀏覽器會很快耗盡可尋址內(nèi)存,這將嚴(yán)重影響頁面性能。一個(gè)非常容易實(shí)現(xiàn)的 JavaScript 性能優(yōu)化技巧就是用 let 替換代碼中的每個(gè) var。
3. 縮小合并
如果你的網(wǎng)頁鏈接到多個(gè) JavaScript 庫,一個(gè)快速簡單的優(yōu)化方法是將所有這些 JavaScript 庫合并到一個(gè)文件中。
當(dāng) JavaScript 加載時(shí),它會阻止其他資源的下載,例如圖像、JSON 和 CSS 文件。并且由于瀏覽器允許與 Internet 建立的外部連接數(shù)量有限,如果你引用了七個(gè)或八個(gè)外部 JavaScript 文件,你可能會完全阻止下載可能用于呈現(xiàn)內(nèi)容的其他資源顯示在首屏之上。通過將所有 JavaScript 組合到一個(gè)文件中,只使用一個(gè)外部連接,這允許瀏覽器同步下載其他資源。
另一種減小 JavaScript 文件大小的簡單方法是對它們應(yīng)用最小化程序,例如 JSCompress。最小化器會去除空格和不必要的文本元素,從而減小 JavaScript 文件的大小。反過來,這優(yōu)化了 JavaScript 文件的下載時(shí)間。將多個(gè) JavaScript 文件合并為一個(gè)以減少傳出網(wǎng)絡(luò)連接的數(shù)量。在Web前端培訓(xùn)中,有理論課程+實(shí)踐項(xiàng)目一起學(xué)習(xí),深化所學(xué)知識,積累項(xiàng)目經(jīng)驗(yàn),獲得快速提升。
4. 不要重新發(fā)明 JavaScript API
JavaScript 有幾個(gè)內(nèi)置的 API,允許對集合或數(shù)組進(jìn)行高效的迭代。使用 Array 的原型構(gòu)造函數(shù),你可以使用類似 lambda 的語法將函數(shù)應(yīng)用于列表中的所有項(xiàng)目或執(zhí)行操作,例如排序或反轉(zhuǎn)。
這些內(nèi)置方法非常高效,并由瀏覽器進(jìn)行了優(yōu)化。但是,一些開發(fā)人員并不了解這些方法,而是編寫迭代循環(huán)來達(dá)到相同的目的。
無需自己重新發(fā)明這些函數(shù)式方法。這不僅浪費(fèi)時(shí)間,而且還引入了不必要的 JavaScript 性能問題。
5. 在服務(wù)器上執(zhí)行密集邏輯
將計(jì)算操作卸載到客戶端的能力是客戶端計(jì)算的一個(gè)關(guān)鍵優(yōu)勢,但客戶端渲染也可能會給功率不足的手持設(shè)備帶來巨大的負(fù)載。
例如,如果渲染圖表或電子表格需要大量計(jì)算,并且該計(jì)算導(dǎo)致 JavaScript 性能問題,請考慮將其移動到服務(wù)器并簡單地將內(nèi)容作為預(yù)先計(jì)算的 HTML 交付給客戶端。瀏覽器在靜態(tài) HTML 顯示上比在復(fù)雜的、內(nèi)存密集型的 JavaScript 函數(shù)運(yùn)行上要高效得多。
JavaScript 是在最終用戶訪問你的網(wǎng)站時(shí)更好地參與和保留他們的關(guān)鍵,但是開發(fā)人員應(yīng)該始終意識到涉及 JavaScript 時(shí)對性能的影響。注意這五個(gè) JavaScript 性能優(yōu)化技巧,以幫助你的 Web 開發(fā)團(tuán)隊(duì)避免一些常見的網(wǎng)站性能陷阱。對JavaScript感興趣的同學(xué),不妨考慮參加Web前端培訓(xùn),可以在短時(shí)間獲得快速提升,有效提高前端開發(fā)工作效率。