出版時間:2010-11 出版社:電子工業(yè)出版社 作者:Nicholas C.Zakas 頁數(shù):210 譯者:丁琛,趙澤欣
Tag標(biāo)簽:無
前言
這是一本關(guān)于JavaScript性能的書?! ≡赪eb應(yīng)用日趨豐富的今天,越來越多的JavaScript被運用在我們的網(wǎng)頁中。隨著用戶體驗被日益重視,前端性能對用戶體驗的影響開始備受關(guān)注,而引起性能問題的因素相對復(fù)雜,因此它很難得到全面的解決。這本書是一個契機(jī),它嘗試著從多個方面綜合分析導(dǎo)致性能問題的原因,并給出適合的解決方案,幫助我們改善Web應(yīng)用的品質(zhì)。 這本書頁數(shù)不多,但它承載著JavaScript性能方面最為寶貴的經(jīng)驗。不僅從語言特性、數(shù)據(jù)結(jié)構(gòu)、瀏覽器機(jī)理、網(wǎng)絡(luò)傳輸?shù)葘用娣治鰧?dǎo)致性能問題的原因,還介紹了多種工具來幫助我們提升開發(fā)過程和部署環(huán)節(jié)的工作效率?! ”緯髡逳icholas C.Zakas是位經(jīng)驗豐富的前端專家,他的許多研究對前端業(yè)界的貢獻(xiàn)讓我們受益匪淺。本書的另外五位特約作者均為各自領(lǐng)域的專家,他們的專業(yè)技能和知識的融入使得本書內(nèi)容更為充實,更具實用價值?! √貏e感謝趙澤欣(小馬),他為審閱譯文花了大量的時間和精力,他的耐心和細(xì)致讓我十分敬佩。感謝朱寧(白鴉)和周筠老師的引薦讓我得以參與本書的翻譯。還要感謝博文視點的編輯徐定翔先生和劉唯一女士在本書翻譯過程中給予的極大理解和幫助。
內(nèi)容概要
如果你使用JavaScript構(gòu)建交互豐富的Web應(yīng)用,那么JavaScript代碼可能是造成你的Web應(yīng)用速度變慢的主要原因。本書揭示的技術(shù)和策略能幫助你在開發(fā)過程中消除性能瓶頸。你將會了解如何提升各方面的性能,包括代碼的加載、運行、DOM交互、頁面生存周期等。雅虎的前端工程師Nicholas C. Zakas和其他五位JavaScript專家介紹了頁面代碼加載的最佳方法和編程技巧,來幫助你編寫更為高效和快速的代碼。你還會了解到構(gòu)建和部署文件到生產(chǎn)環(huán)境的最佳實踐,以及有助于定位線上問題的工具。
作者簡介
Nicholas C.Zakas,雅虎首頁的主要開發(fā)者,雅虎用戶界面庫(YUI)代碼貢獻(xiàn)者,擅長利用JavaScript、HTML、CSS、XML、XSLT設(shè)計和實現(xiàn)WEB界面的軟件工程師。
書籍目錄
前言第1章:加載和執(zhí)行1.1 腳本位置1.2 組織腳本1.3 無阻塞的腳本1.3.1 延遲的腳本1.3.2 動態(tài)腳本元素1.3.3 XMLHttpRequest腳本注入1.3.4 推薦的無阻塞模式1.4 小結(jié)第2章:數(shù)據(jù)訪問2.1 管理作用域2.1.1 作用域鏈和標(biāo)識符解析2.1.2 標(biāo)識符解析的性能2.1.3 改變作用域鏈2.1.4 動態(tài)作用域2.1.5 閉包,作用域和內(nèi)存2.2 對象成員2.2.1 原型2.2.2 原型鏈2.2.3 嵌套成員2.2.4 緩存對象成員值2.3 小結(jié)第3章:DOM編程3.1 瀏覽器中的DOM3.1.1 天生就慢3.2 DOM訪問與修改3.2.1 innerHTML對比DOM方法3.2.2 節(jié)點克隆3.2.3 HTML集合3.2.4 遍歷DOM3.3 重繪與重排3.3.1 重排何時發(fā)生?3.3.2 渲染樹變化的排隊與刷新3.3.3 最小化重繪和重排3.3.4 緩存布局信息3.3.5 讓元素脫離動畫流3.3.6 IE和:hover3.4 事件委托3.5 小結(jié)第4章:算法和流程控制第5章:字符串和正則表達(dá)式第6章:快速響應(yīng)的用戶界面第7章:Ajax第8章:編程實踐第9章:構(gòu)建并部署高性能JavaScript應(yīng)用第10章:工具索引
章節(jié)摘錄
在1996年,JavaScript引擎只要能支持頁面里數(shù)十行的JavaScript代碼就好,而今天,卻運行著成千上萬行JavaScript代碼的Web應(yīng)用。從許多方面來說,如果不是因為瀏覽器自身在語言管理和基礎(chǔ)設(shè)施方面的落后,JavaScript本可能取得更大規(guī)模的成功。IE6就是一個明證,發(fā)布之初,它的穩(wěn)定性和性能都被人們稱頌,但后來卻因為自身的Bug和反應(yīng)遲鈍而被痛批為令人討厭的Web應(yīng)用平臺?! ∈聦嵣?,IE6并沒有變慢,它只是被寄予了厚望。2001年IE 6剛發(fā)布時出現(xiàn)的各類早期Web應(yīng)用比2005年后出現(xiàn)的應(yīng)用更輕量,JavaScript代碼也遠(yuǎn)沒有那么多。JavaScript代碼數(shù)量的增長帶來的影響變得明顯,IE 6的JavaScript引擎吃不消了,原因在于它的“靜態(tài)垃圾回收機(jī)制”。該引擎監(jiān)視內(nèi)存中固定數(shù)量的對象來確定何時進(jìn)行垃圾回收。早期的Web應(yīng)用開發(fā)人員很少會遇到這個極限值,隨著更多的JavaScript代碼產(chǎn)生越來越多的對象,復(fù)雜的Web應(yīng)用開始頻繁遭遇這個門檻。問題變得清晰起來:JavaScript開發(fā)人員和Web應(yīng)用都在發(fā)展,而JavaScript引擎卻沒有?! ”M管其他瀏覽器。有著更加完善的垃圾回收機(jī)制和更好的運行性能,但大多數(shù)仍然使用JavaScript解釋器來執(zhí)行代碼。解釋性代碼天生就沒有編譯性代碼快,因為解釋性代碼必須經(jīng)歷把代碼轉(zhuǎn)化成計算機(jī)指令的過程。無論解釋器怎樣優(yōu)化和多么智能,它總是會帶來一些性能損耗?! 【幾g器已經(jīng)有了各種各樣的優(yōu)化,使得開發(fā)人員可以按照他們想要的方式編寫代碼,而不需要擔(dān)心是否是最優(yōu)。編譯器可以基于詞法分析去判斷代碼想實現(xiàn)什么,然后產(chǎn)生出能完成任務(wù)的運行最快的機(jī)器碼來進(jìn)行優(yōu)化。解釋器很少有這樣的優(yōu)化,這很大程度上意味著,代碼怎么寫,就被怎么執(zhí)行。 實際上,通常在其他語言中由編譯器處理的優(yōu)化,在JavaScript中卻要求開發(fā)人員來完成。 ……
媒體關(guān)注與評論
《高性能Java Script》涵蓋了當(dāng)今Java Script開發(fā)者需要了解的所有性能問題,毫無疑問,它已加入我的性能最佳實踐列表?!薄 猄teve Souders 《高性能Java Script》是個讓人印象深刻的JavaScript話題、技巧、秘訣的集合。如果你想編寫高質(zhì)量Java Script代碼,這本書值得一讀?!薄 猇enkat Udayasankar雅虎搜索性能專家
圖書封面
圖書標(biāo)簽Tags
無
評論、評分、閱讀與下載