高性能JavaScript

所属分类:編程語言與程序設計  
出版时间:2010-11   出版时间:電子工業出版社   作者:Nicholas C.Zakas   页数:210   译者:丁琛,趙澤欣  

前言

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

内容概要

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

作者简介

  Nicholas C.Zakas,雅虎首頁的主要開發者,雅虎用戶界面庫(YUI)代碼貢獻者,擅長利用JavaScript、HTML、CSS、XML、XSLT設計和實現WEB界面的軟件工程師。

书籍目录

前言第1章︰加載和執行1.1 腳本位置1.2 組織腳本1.3 無阻塞的腳本1.3.1 延遲的腳本1.3.2 動態腳本元素1.3.3 XMLHttpRequest腳本注入1.3.4 推薦的無阻塞模式1.4 小結第2章︰數據訪問2.1 管理作用域2.1.1 作用域鏈和標識符解析2.1.2 標識符解析的性能2.1.3 改變作用域鏈2.1.4 動態作用域2.1.5 閉包,作用域和內存2.2 對象成員2.2.1 原型2.2.2 原型鏈2.2.3 嵌套成員2.2.4 緩存對象成員值2.3 小結第3章︰DOM編程3.1 瀏覽器中的DOM3.1.1 天生就慢3.2 DOM訪問與修改3.2.1 innerHTML對比DOM方法3.2.2 節點克隆3.2.3 HTML集合3.2.4 遍歷DOM3.3 重繪與重排3.3.1 重排何時發生?3.3.2 渲染樹變化的排隊與刷新3.3.3 最小化重繪和重排3.3.4 緩存布局信息3.3.5 讓元素脫離動畫流3.3.6 IE和︰hover3.4 事件委托3.5 小結第4章︰算法和流程控制第5章︰字符串和正則表達式第6章︰快速響應的用戶界面第7章︰Ajax第8章︰編程實踐第9章︰構建並部署高性能JavaScript應用第10章︰工具索引

章节摘录

  在1996年,JavaScript引擎只要能支持頁面里數十行的JavaScript代碼就好,而今天,卻運行著成千上萬行JavaScript代碼的Web應用。從許多方面來說,如果不是因為瀏覽器自身在語言管理和基礎設施方面的落後,JavaScript本可能取得更大規模的成功。IE6就是一個明證,發布之初,它的穩定性和性能都被人們稱頌,但後來卻因為自身的Bug和反應遲鈍而被痛批為令人討厭的Web應用平台。  事實上,IE6並沒有變慢,它只是被寄予了厚望。2001年IE 6剛發布時出現的各類早期Web應用比2005年後出現的應用更輕量,JavaScript代碼也遠沒有那麼多。JavaScript代碼數量的增長帶來的影響變得明顯,IE 6的JavaScript引擎吃不消了,原因在于它的“靜態垃圾回收機制”。該引擎監視內存中固定數量的對象來確定何時進行垃圾回收。早期的Web應用開發人員很少會遇到這個極限值,隨著更多的JavaScript代碼產生越來越多的對象,復雜的Web應用開始頻繁遭遇這個門檻。問題變得清晰起來︰JavaScript開發人員和Web應用都在發展,而JavaScript引擎卻沒有。  盡管其他瀏覽器。有著更加完善的垃圾回收機制和更好的運行性能,但大多數仍然使用JavaScript解釋器來執行代碼。解釋性代碼天生就沒有編譯性代碼快,因為解釋性代碼必須經歷把代碼轉化成計算機指令的過程。無論解釋器怎樣優化和多麼智能,它總是會帶來一些性能損耗。  編譯器已經有了各種各樣的優化,使得開發人員可以按照他們想要的方式編寫代碼,而不需要擔心是否是最優。編譯器可以基于詞法分析去判斷代碼想實現什麼,然後產生出能完成任務的運行最快的機器碼來進行優化。解釋器很少有這樣的優化,這很大程度上意味著,代碼怎麼寫,就被怎麼執行。  實際上,通常在其他語言中由編譯器處理的優化,在JavaScript中卻要求開發人員來完成。  ……

媒体关注与评论

  《高性能Java Script》涵盖了当今Java Script开发者需要了解的所有性能问题,毫无疑问,它已加入我的性能最佳实践列表。”  ——Steve Souders  《高性能Java Script》是个让人印象深刻的JavaScript话题、技巧、秘诀的集合。如果你想编写高质量Java Script代码,这本书值得一读。”  ——Venkat Udayasankar雅虎搜索性能专家

图书封面




    高性能JavaScript下載



用户评论 (总计25条)

 
 

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

計算機與互聯網 PDF免费下载,編程語言與程序設計PDF免费下载。 计算机教程网 

计算机教程网 @ 2017