高性能JavaScript

出版時間:2010-11  出版社:電子工業(yè)出版社  作者:Nicholas C.Zakas  頁數(shù):210  譯者:丁琛,趙澤欣  
Tag標(biāo)簽:無  

前言

  這是一本關(guān)于JavaScript性能的書?! ≡赪eb應(yīng)用日趨豐富的今天,越來越多的JavaScript被運(yùn)用在我們的網(wǎng)頁中。隨著用戶體驗(yàn)被日益重視,前端性能對用戶體驗(yàn)的影響開始備受關(guān)注,而引起性能問題的因素相對復(fù)雜,因此它很難得到全面的解決。這本書是一個契機(jī),它嘗試著從多個方面綜合分析導(dǎo)致性能問題的原因,并給出適合的解決方案,幫助我們改善Web應(yīng)用的品質(zhì)。  這本書頁數(shù)不多,但它承載著JavaScript性能方面最為寶貴的經(jīng)驗(yàn)。不僅從語言特性、數(shù)據(jù)結(jié)構(gòu)、瀏覽器機(jī)理、網(wǎng)絡(luò)傳輸?shù)葘用娣治鰧?dǎo)致性能問題的原因,還介紹了多種工具來幫助我們提升開發(fā)過程和部署環(huán)節(jié)的工作效率?! ”緯髡逳icholas C.Zakas是位經(jīng)驗(yàn)豐富的前端專家,他的許多研究對前端業(yè)界的貢獻(xiàn)讓我們受益匪淺。本書的另外五位特約作者均為各自領(lǐng)域的專家,他們的專業(yè)技能和知識的融入使得本書內(nèi)容更為充實(shí),更具實(shí)用價值?! √貏e感謝趙澤欣(小馬),他為審閱譯文花了大量的時間和精力,他的耐心和細(xì)致讓我十分敬佩。感謝朱寧(白鴉)和周筠老師的引薦讓我得以參與本書的翻譯。還要感謝博文視點(diǎn)的編輯徐定翔先生和劉唯一女士在本書翻譯過程中給予的極大理解和幫助。

內(nèi)容概要

  如果你使用JavaScript構(gòu)建交互豐富的Web應(yīng)用,那么JavaScript代碼可能是造成你的Web應(yīng)用速度變慢的主要原因。本書揭示的技術(shù)和策略能幫助你在開發(fā)過程中消除性能瓶頸。你將會了解如何提升各方面的性能,包括代碼的加載、運(yùn)行、DOM交互、頁面生存周期等。雅虎的前端工程師Nicholas C. Zakas和其他五位JavaScript專家介紹了頁面代碼加載的最佳方法和編程技巧,來幫助你編寫更為高效和快速的代碼。你還會了解到構(gòu)建和部署文件到生產(chǎn)環(huán)境的最佳實(shí)踐,以及有助于定位線上問題的工具。

作者簡介

  Nicholas C.Zakas,雅虎首頁的主要開發(fā)者,雅虎用戶界面庫(YUI)代碼貢獻(xiàn)者,擅長利用JavaScript、HTML、CSS、XML、XSLT設(shè)計和實(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é)點(diǎn)克隆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章:編程實(shí)踐第9章:構(gòu)建并部署高性能JavaScript應(yīng)用第10章:工具索引

章節(jié)摘錄

  在1996年,JavaScript引擎只要能支持頁面里數(shù)十行的JavaScript代碼就好,而今天,卻運(yùn)行著成千上萬行JavaScript代碼的Web應(yīng)用。從許多方面來說,如果不是因?yàn)闉g覽器自身在語言管理和基礎(chǔ)設(shè)施方面的落后,JavaScript本可能取得更大規(guī)模的成功。IE6就是一個明證,發(fā)布之初,它的穩(wěn)定性和性能都被人們稱頌,但后來卻因?yàn)樽陨淼腂ug和反應(yīng)遲鈍而被痛批為令人討厭的Web應(yīng)用平臺?! ∈聦?shí)上,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引擎卻沒有。  盡管其他瀏覽器。有著更加完善的垃圾回收機(jī)制和更好的運(yùn)行性能,但大多數(shù)仍然使用JavaScript解釋器來執(zhí)行代碼。解釋性代碼天生就沒有編譯性代碼快,因?yàn)榻忉屝源a必須經(jīng)歷把代碼轉(zhuǎn)化成計算機(jī)指令的過程。無論解釋器怎樣優(yōu)化和多么智能,它總是會帶來一些性能損耗?! 【幾g器已經(jīng)有了各種各樣的優(yōu)化,使得開發(fā)人員可以按照他們想要的方式編寫代碼,而不需要擔(dān)心是否是最優(yōu)。編譯器可以基于詞法分析去判斷代碼想實(shí)現(xiàn)什么,然后產(chǎn)生出能完成任務(wù)的運(yùn)行最快的機(jī)器碼來進(jìn)行優(yōu)化。解釋器很少有這樣的優(yōu)化,這很大程度上意味著,代碼怎么寫,就被怎么執(zhí)行?! ?shí)際上,通常在其他語言中由編譯器處理的優(yōu)化,在JavaScript中卻要求開發(fā)人員來完成?!  ?/pre>

媒體關(guān)注與評論

  《高性能Java Script》涵蓋了當(dāng)今Java Script開發(fā)者需要了解的所有性能問題,毫無疑問,它已加入我的性能最佳實(shí)踐列表?!薄  猄teve Souders  《高性能Java Script》是個讓人印象深刻的JavaScript話題、技巧、秘訣的集合。如果你想編寫高質(zhì)量Java Script代碼,這本書值得一讀。”  ——Venkat Udayasankar雅虎搜索性能專家

圖書封面

圖書標(biāo)簽Tags

評論、評分、閱讀與下載


    高性能JavaScript PDF格式下載


用戶評論 (總計25條)

 
 

  •   有非常多的值得學(xué)習(xí)的東西
  •   非常不錯的書,需要細(xì)細(xì)閱讀
  •   javascript
  •   很不錯 有所收獲
  •   書質(zhì)量很好,正在看,很有幫助
  •     從我第一次接觸Web編程的時候,我就對JavaScript這個名字耿耿于懷,因?yàn)樗鶭ava一點(diǎn)兒關(guān)系也沒有,卻非要擁有一個這樣的名字來嘩眾取寵。從現(xiàn)在看,這門語言的生命力還是很旺盛的。
      《高性能》這本書是JavaScript界的神書之一,如果你說你沒看過這本書而且你還是一個Web前端開發(fā)者,那你就跟號稱經(jīng)濟(jì)學(xué)家卻沒讀過《微觀經(jīng)濟(jì)學(xué)》一個水平了。在我這個Web前端開發(fā)菜鳥看來,JavaScript真的是一門非常神奇的語言,你盡管會覺得它有這樣那樣的缺點(diǎn),但你卻愛它愛的死去活來,被虐千百遍也生不出恨來。在這點(diǎn)上,JavaScript跟C和C++一樣,再難用也容易產(chǎn)生感情,而對Java,它雖然很好用有各種各樣NB的第三方庫,但總感覺缺少點(diǎn)什么東西。
      趕緊繞回來說說這本書,《高性能》這本書我認(rèn)為是從菜鳥到初學(xué)者再到中級開發(fā)人員的必備,這本書雖然只有薄薄一冊,涵蓋的東西卻有很多,更關(guān)鍵的是這是一本實(shí)踐經(jīng)驗(yàn)的總結(jié)。書中提供了很多很棒的方法,并都附帶有詳細(xì)的數(shù)據(jù)信息加以驗(yàn)證,可以看出作者在JavaScript方面浸淫之久。如果你面對某個開發(fā)過程中遇到的問題十分迷惑,相信我,試著從這本書中找找答案。
      JavaScript,這門擁有奇葩名字的神奇語言,在對它探索和學(xué)習(xí)的路上,我才剛剛開始。
      路漫漫其修遠(yuǎn)兮,吾將上下而求索,again。
  •      這本書應(yīng)該說是javascript的極好的讀物了,并沒有很多人說的翻譯的那么爛,翻譯的應(yīng)該算是不錯的js讀物了,相對于大叔翻譯的那本《javascrpt設(shè)計模式》不知道好多少,那本書的翻譯讓我都沒有看下去的勇氣。
       本書頁碼雖少,但作者行文非常流暢,漸進(jìn)式的概括了所有碰到的模式,比較適合配合《javascript語言精粹》閱讀,我甚至認(rèn)為此書比之《javascript語言精粹》更加精彩。
       1天1章,輕松閱讀,基本上保持心情愉快的看完此書。
  •     非常好的javascript性能和優(yōu)化技巧書籍,作者做了大量的測試工作,總結(jié)了很多有價值的內(nèi)容。不過在實(shí)際使用中要根據(jù)實(shí)際情況靈活使用,比如有些測試是在幾萬次的循環(huán)里才會有一些差距,這種情況下如果只是為了優(yōu)化性能而使代碼變得復(fù)雜和難以理解就得不償失了。如果確實(shí)存在性能問題,應(yīng)該首先該功能是不是必須的,有沒有更好的實(shí)現(xiàn)方法,最后才是怎么去優(yōu)化。
  •     最佳實(shí)踐類書籍,灰常實(shí)用!
      
      同是zakas寫的,講閉包、作用域、原型鏈的部分,如果有同學(xué)看《JS高級程序設(shè)計》覺得理解不夠透徹的話,建議看這本書,言簡意賅多了~~當(dāng)然這部分個人覺得還是dmitry的blog里的ECMAScript系列文章講得最好~~
      
      講性能優(yōu)化的部分很多人都已經(jīng)評論了。
      
      另外,最近打算重讀一遍:
      一是因?yàn)楫?dāng)時是在火車上一口氣讀完的;
      二是因?yàn)榉g讓我有想看原文的沖動。
  •     如果你是IT或互聯(lián)網(wǎng)從業(yè)人員,這本書實(shí)在非常有價值。
      如果是搞學(xué)術(shù)研究的,這本書里大量的數(shù)據(jù)也很有幫助。
      這的確是一本非常好的書,去書店買了。
      但書中也存在一些問題,作者對js的性能調(diào)優(yōu)的有許多重復(fù)。
  •     好書,超好的一本書,可惜翻譯人員完全不靠譜,倘若哪里看不懂或者有費(fèi)解的,盡情痛斥翻譯者吧——丁琛。
      
      前面湊合也過去了,看到正則那一章,P89,開始死活看不過去,不明白說的啥,最后找來原版PDF對照了一下,我勒個去。P89頁最后一行原話是這樣:It does, and the regex is also able to match
      the following space character. 我就想不通譯者從哪里翻出來個“如果”:“如果匹配成功,正則表達(dá)式匹配隨后的空格”。
      
      還是這一頁,譯注7,原文就不敲了,有書的可以挑戰(zhàn)一下智商試試能不能看懂,不參考原文看明白的,我請他喝下午茶。
      
      還是這一頁,Alternation被翻譯為“分支”,到了下一頁就變成了“可選項”。沒有理由,這里的語境,它們就是說的同一個東西。翻譯成“分支”就挺恰當(dāng),甚至前后保持用“可選項”也能湊合。
      
      往后翻兩頁到P92,第一段舉例了兩個模式——注意它用的是中文的左右雙引號。幸好我看了原文,原文的引號是英文的(不分左右)。且不說中文翻譯會讓人誤以為引號內(nèi)部才是用于示例的模式;甚至因?yàn)橐栕兂闪酥形?,后面的模式就變成錯誤的了——英文引號可以用一個引號字符匹配,中文引號卻不行。
      
      這樣錯漏百出的翻譯,實(shí)在不忍猝讀??稍瓡鴮懙锰?,所以也能勻出個四星。
      
      查了下丁琛,網(wǎng)上沒有任何資料,應(yīng)該只翻譯過這一本書。淘寶白鴉和博文副總周筠引薦翻譯的,淘寶小馬審校(對小馬印像本來就一般,這次又減分一大截)。
      
      =================== Update 2012.05 ===================
      
      沒想到被頂?shù)酱藭u論第一的位置了。補(bǔ)充點(diǎn)說明,譯者挺誠懇的很快就給了回復(fù),會更新勘誤列表,如果能夠再版修訂這些問題就更好了。
      
      @dc:此書有沒有在線勘誤列表?有的話我放在這里,應(yīng)該也是對大家比較有幫助的。
  •     本書從性能角度全面分析js,相比市面上大部分企圖面面俱到的教材要好很多。中文版僅210頁,字字如金。
      作者做了大量的瀏覽器測試,科學(xué)可信,逐步分析js程序員關(guān)心的性能問題,并提供對應(yīng)的解決技巧和方案。
      本書是一本沖破js學(xué)習(xí)瓶頸的好書,書中隱含的編程思想和良好的編碼習(xí)慣令每個讀者受用
  •     這本書的含金量非常大,因?yàn)樗镞叺暮芏嘀R,都是作者通過實(shí)踐總結(jié)出來的,都是經(jīng)驗(yàn)的積累,這在一般的教科書上是學(xué)不到的。
      例如:你會感覺用chrome比IE快,但是為什么快?這本書講了很多這方面的東西
  •   剛?cè)胧忠槐?,卓越買的
  •   請問本書的價值體現(xiàn)在哪?能否告知?
  •   你好,我是本書譯者。多謝指出問題,我們最近也在整理勘誤表,會通知出版社在下一次印刷時修正。
        
    翻譯技術(shù)書籍從來不是件討好的活兒。沒錯,這是本人翻譯的第一本書,作為技術(shù)愛好者,參與此事的初衷是希望為國內(nèi)一部分前端開發(fā)者降低閱讀門檻。把這件事做好才是最重要的。
    大家如發(fā)現(xiàn)其他問題,歡迎隨時告知。
  •   @dc 正則這一章確實(shí)錯誤比較多,其他的都非常好。加油~o(∩_∩)o
  •   @微微笑 能否把發(fā)現(xiàn)的問題整理發(fā)到我郵箱?多謝。
  •   支持譯者的態(tài)度
  •   @dc能不能先把已經(jīng)確認(rèn)的勘誤發(fā)表一下 P89的 譯注7確實(shí)很難理解。。。
  •   @dc 譯者的態(tài)度這么誠懇我都不好意思了……翻譯是很辛苦的,辛苦折騰完了被人這么指責(zé)還能保持誠懇態(tài)度,挺不容易。
    先謝謝譯者的辛苦勞動,希望以后印刷的版本能做得盡善盡美。
  •   @dc 雖然我以訂購,還沒到。我還是肯定一下翻譯者的辛勤勞動吧。
    以后會多支持你翻譯的書
  •   翻譯是比較差,讀著挺別扭
  •   呵呵,不知道現(xiàn)在勘正了沒有?。课掖蛩阗I一本呢
  •   本書應(yīng)該作為接觸一段javascript的人員閱讀.
 

250萬本中文圖書簡介、評論、評分,PDF格式免費(fèi)下載。 第一圖書網(wǎng) 手機(jī)版

京ICP備13047387號-7