High Performance JavaScript(高性能JavaScript)讀書筆記分析
更新時間:2011年05月05日 22:15:56 作者:
High Performance JavaScript(高性能JavaScript)讀書筆記,讓你的js代碼更有效率。
第一章:加載和執(zhí)行
瀏覽器的JavaScript的引擎是編譯器層的優(yōu)化;
當瀏覽器執(zhí)行JavaScript代碼時,不能同時做其他任何事情(單一進程),意味著<script>標簽每次出現(xiàn)都霸道地讓頁面等帶腳本的解析和執(zhí)行(每個文件必須等到前一個文件下載并執(zhí)行完成才會開始下載),所以頭部的JS和CSS用來渲染頁面,交互行為(幾乎所有)的JS放在<body>底部;
主流瀏覽器都允許并行下載JS。
減少外鏈腳本數(shù)量將會改善性能(合并JS)
任何網站都可以使用一個把制定文件合并處理后的URL來獲取任意數(shù)量的文件。
defer屬性可延遲腳本(只有IE4 和FF3.5 支持)
第二章:數(shù)據(jù)訪問
JavaScript中有四種基本的數(shù)據(jù)存取位置: 直接量,變量,數(shù)組元素(以數(shù)字作為索引),對象成員(以字符床作為索引)。
訪問直接量和局部變量的速度最快,相反,訪問數(shù)組元素和對象成員相對較慢。
屬性或方法在原型鏈中的位置越深,訪問它的速度也越慢。
通常來說,可以通過吧常用的對象,數(shù)組元素,跨越變量保存在局部變量中來改善JavaScript性能。
第三章:DOM編程
DOM操作在webkit內核的瀏覽器速度快,其他的瀏覽器innerHTML執(zhí)行快。
訪問和操作DOM是現(xiàn)代WEB應用的重要部分。但每次穿越鏈接ECMAScript和DOM兩個島嶼之間的橋梁都會被收取‘過橋費'.
要留意重回和重排。
在IE中:hover會降低響應速度。
第四章:算法和流程控制
避免使用for-in循環(huán),除非需要遍歷一個屬性數(shù)量位置的對象。
了解棧溢出錯誤。
第五章:字符串和正則表達式
回溯既是正則表達式匹配功能的基本組成部分,也是正則表達式的低效之源。
第六章:快速響應的用戶界面
任何JavaScript任務都不應當執(zhí)行超過100毫秒。
Web workers是新版瀏覽器支持的特性。
沒有什么JavaScript代碼會重要到可以影響用戶體驗的程度.
第七章:Ajax
JSON是輕量級的數(shù)據(jù)格式,解析速度快。
減少請求數(shù),可通過合并JS和CSS,還有IMG。
縮短頁面加載時間,頁面主要內容加載完成后,用Ajax獲取那些次要的文件。
第八章:編程實踐
大多數(shù)的時候,沒必要使用eval()和Function(),因此最好避免使用它們。至于setTimeout()和setInterval(),建議傳入函數(shù)而不是字符串來作為第一個參數(shù)。
在JavaScript中創(chuàng)建對象和數(shù)組的方法有多種,但使用對象和數(shù)組直接量是最快的方式(對象屬性和數(shù)組項越多,使用直接量的好處就越明顯)。
不要重復工作:延遲加載;條件預加載.
多使用原生方法,因為更快。
第九章:構建并部署高性能JavaScript應用
PV(page view)即頁面瀏覽量或點擊量。
減少頁面渲染所需的HTTP請求數(shù),特別是針對那些首次訪問網站的用戶。
JavaScript壓縮。
JavaScript緩存。
使用內容分發(fā)網絡(CDN)
第十章主要介紹工具:如firebug,YSlow,和一些性能分析.
瀏覽器的JavaScript的引擎是編譯器層的優(yōu)化;
當瀏覽器執(zhí)行JavaScript代碼時,不能同時做其他任何事情(單一進程),意味著<script>標簽每次出現(xiàn)都霸道地讓頁面等帶腳本的解析和執(zhí)行(每個文件必須等到前一個文件下載并執(zhí)行完成才會開始下載),所以頭部的JS和CSS用來渲染頁面,交互行為(幾乎所有)的JS放在<body>底部;
主流瀏覽器都允許并行下載JS。
減少外鏈腳本數(shù)量將會改善性能(合并JS)
任何網站都可以使用一個把制定文件合并處理后的URL來獲取任意數(shù)量的文件。
defer屬性可延遲腳本(只有IE4 和FF3.5 支持)
第二章:數(shù)據(jù)訪問
JavaScript中有四種基本的數(shù)據(jù)存取位置: 直接量,變量,數(shù)組元素(以數(shù)字作為索引),對象成員(以字符床作為索引)。
訪問直接量和局部變量的速度最快,相反,訪問數(shù)組元素和對象成員相對較慢。
屬性或方法在原型鏈中的位置越深,訪問它的速度也越慢。
通常來說,可以通過吧常用的對象,數(shù)組元素,跨越變量保存在局部變量中來改善JavaScript性能。
第三章:DOM編程
DOM操作在webkit內核的瀏覽器速度快,其他的瀏覽器innerHTML執(zhí)行快。
訪問和操作DOM是現(xiàn)代WEB應用的重要部分。但每次穿越鏈接ECMAScript和DOM兩個島嶼之間的橋梁都會被收取‘過橋費'.
要留意重回和重排。
在IE中:hover會降低響應速度。
第四章:算法和流程控制
避免使用for-in循環(huán),除非需要遍歷一個屬性數(shù)量位置的對象。
了解棧溢出錯誤。
第五章:字符串和正則表達式
回溯既是正則表達式匹配功能的基本組成部分,也是正則表達式的低效之源。
第六章:快速響應的用戶界面
任何JavaScript任務都不應當執(zhí)行超過100毫秒。
Web workers是新版瀏覽器支持的特性。
沒有什么JavaScript代碼會重要到可以影響用戶體驗的程度.
第七章:Ajax
JSON是輕量級的數(shù)據(jù)格式,解析速度快。
減少請求數(shù),可通過合并JS和CSS,還有IMG。
縮短頁面加載時間,頁面主要內容加載完成后,用Ajax獲取那些次要的文件。
第八章:編程實踐
大多數(shù)的時候,沒必要使用eval()和Function(),因此最好避免使用它們。至于setTimeout()和setInterval(),建議傳入函數(shù)而不是字符串來作為第一個參數(shù)。
在JavaScript中創(chuàng)建對象和數(shù)組的方法有多種,但使用對象和數(shù)組直接量是最快的方式(對象屬性和數(shù)組項越多,使用直接量的好處就越明顯)。
不要重復工作:延遲加載;條件預加載.
多使用原生方法,因為更快。
第九章:構建并部署高性能JavaScript應用
PV(page view)即頁面瀏覽量或點擊量。
減少頁面渲染所需的HTTP請求數(shù),特別是針對那些首次訪問網站的用戶。
JavaScript壓縮。
JavaScript緩存。
使用內容分發(fā)網絡(CDN)
第十章主要介紹工具:如firebug,YSlow,和一些性能分析.
相關文章
微信小程序中的canvas 文字斷行和省略號顯示功能的處理方法
大家都知道在canvas中沒有提供方法來處理文字的多行問題,只有通過截取指定字符串來達到目的。接下來通過本文給大家介紹微信小程序中的canvas 文字斷行和省略號顯示功能 ,需要的朋友可以參考下2018-11-11javascript ES6 Template String模板字符串使用方法
這篇文章主要介紹了javascript ES6 模板字符串(Template String)是增強版的字符串,用反引號(`)標識,它可以當作普通字符串使用,也可以用來定義多行字符串,或者在字符串中嵌入變量,需要的朋友可以參考下2023-06-06