第一图书网

高性能JavaScript

Nicholas C.Zakas 电子工业出版社
出版时间:

2010-11  

出版社:

电子工业出版社  

作者:

Nicholas C.Zakas  

页数:

210  

译者:

丁琛,赵泽欣  

Tag标签:

无  

前言

  这是一本关于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雅虎搜索性能专家


图书封面

图书标签Tags

广告

下载页面


高性能JavaScript PDF格式下载



有非常多的值得学习的东西


非常不错的书,需要细细阅读


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的人员阅读.


相关图书