`

书_JavaScript_的那些书[转]

    博客分类:
 
阅读更多

http://limu.iteye.com/blog/1267475

 

=========

 

 

<<SVG开发实践 >>

===========

 

    又好久没写东西了,写上一篇的时候还以为接下来的工作会轻松一些,结果未从我所愿呐,又是一阵忙碌.而这段时间穿插着做了很多12年淘宝校园招聘的前端面试,很多同学都有问到,学校里没有前端的课程,那如何学习JavaScript?
        我的回答是:读书吧~相对于在网上学习,在项目中学习和跟着有经验的同事学习,书中有着相对完整的知识体系,每读一本好书都会带来一次全面的提高.而如果深一脚浅一脚的学习,写出代码的质量会参差不齐.初学者的首要任务是成为靠谱的熟练开发者,能够稳定的输出有一定质量的代码,这样才能让人放心的把任务交给你.从这个角度来看,跟着w3school类成体系的网络教程学习也是不错的选择,只不过我没有亲自实践过.
        在07年之前,我是在做IEonly的企业级B/S应用,虽然当时项目的JScript就已经非常复杂,但当时团队里有很多经验丰富的同事,多是跟他们请教,或者再MSDN和网上找答案.07年进入阿里之后,开始直面兼容性问题,同时开始单打独斗,这个阶段开始接触相关的前端书籍,最先购买的是<JavaScript高级程序设计>和<JavaScript Dom编程艺术>.可以说比较幸运,挑中了这两本很靠谱的书(其实当时市面上书籍并不多,感谢选择出版这些书和翻译这些书的同学们),近来这两本书都出了第二版其生命力可见一斑.
        这几年来,自认读的前端方面的书不算少,校招同学们问到有什么书推荐,我还是会列几个批次的书籍出来给大家,在这里公布一下,没法说这是最优学习路线,但真看进去了获得一个IT民工从业资格是没啥问题的.咱也先秀下书架吧:

        说说我对于书的选择,在从高级程序设计以及DOM编程艺术获得了较好的用户体验之后,基本上延续了选择译著的路子,属顺势而为倒没有什么特殊的因素在里头.而我一般不会推荐英文原版书,中文更具亲和力,JavaScript并不是一门多么高深的语言,我相信译者是可以在深刻理解原文的基础上做翻译的.我也会读一些外文书,而往往当我知道一本不错的书籍有了出版计划,就会停止精读,等译作出版(比如不久前的<高性能JavaScript>).不过确实有时会遇到术语翻译不一致甚至翻译的不通顺的情况,好在多数书网上可以找到英文电子版,实在不解之处对照一下也就可以了.
       
        下面都是我精读过且觉得不错的书,先分分类再逐本分享下我的读书心得:
        第一批次:入门级,也适合想掌握一些前端技能的非前端工程师.
        <JavaScript Dom编程艺术>

       
        第二批次:成为一名合格的前端工程师
        <JavaScript高级程序设计>(或<JavaScript权威指南>)
       
<精通JavaScript>
       
        第三批次:更优秀的代码,更优良的设计
        <JavaScript语言精粹>
        <JavaScript设计模式>
       
        第四批次:从语言细节到复杂工程实践,想开发靠谱的各类底层代码,应该看看
        <Secrets of the JavaScript Ninja>
        <JavaScript Patterns>
        <ECMA-262 in Detail>
        应该重视跟踪阅读一些大牛们的Blog了
        一直在等待:<一本JavaScript语言作者或引擎实现者写的书>
       
        番外篇:各类专题书籍,读好第二批次书籍之后,有精力就接触下
        <高性能网站建设指南>
        <高性能网站建设进阶指南>
        <高性能JavaScript>
        <Ajax实战>
        <JQuery实战>
        <精通CSS>(或<CSS权威指南>)
        <正则表达式必知必会>(或<正则表达式权威指南>)
        应该选择:<一本HTML5方面的书>
        应该选择:<一本NodeJS方面的书>


JavaScript Dom编程艺术(第二版链接)

        话说这本书的中文名有一些标题党的,当初如果知道这仅是一本入门书籍,我是不会买来的.拿到后一天就看完了,对我来说没有太多技能上的实质帮助.不过这个书语言很流畅,重要的是对知识深浅度把握的很好,html/js/css/dom各个方面都把握在一个合适的度,这很符合我对书籍期望,一步步走,每一步都踏踏实实.
        这本书通过几个实例,循序渐进的介绍了前端开发的方方面面,让大家能够了解前端的技术体系概况,又能具备了一些简单的动手能力.如果大家对我之前写过的<浏览器端技术体系概览 -- 前端开发的七种武器>有些感觉,那读读这本书正好能上手实践一把.
        去年淘宝前端懒懒交流会的豆瓣小站上做了一个调查,如果非要您推荐一本适合新人学习的js方面的书,您的推荐是什么?虽然投票的人不多,但这本书却是遥遥领先.

JavaScript高级程序设计(第二版链接)

        这本书的第一版很全面且不枯燥的书籍,年纪轻轻的NCZ有这样的大作难能可贵.读懂这本书,前端技能又可以上一个台阶,基本上可以成为专业的前端工程师了.
        对于当时的我来讲,这本书及时的补充了浏览器兼容性方面的知识,特别是事件相关的知识,这个浏览器间差别最大.有些内容讲的非常简单明了,比如call和apply的用法,之前总是理解不好,NCZ几句话+一个例子就说明白了.
        然而作为全面型的书籍,第一版也是有一些问题的:
        1.闭包只半页篇幅,没说清楚.
        2.匿名函数没怎么讲.
        3.全书没提到constructor,更别说hasOwnProperty,__proto__.
        这带来了我之前说的深一脚浅一脚的困扰,这些知识基本上是通过<JavaScript权威指南>阅读中补充的,当然当时版本的权威指南也有同样的问题,比如它没解释instanceof.也没提到__proto__.这造成了我对面向对象理解的不全面,当时在做了N多测试后还很蛋疼的写了一篇博文<JavaScript constructor和instanceof,JSOO中的一对欢喜冤家>,后来接触到<JavaScript设计模式>关于OO的全面论述之后,果断删掉了这篇JY.
        相信这本书的第二版,以及权威指南的第六版肯定会在这些方面进行补充.不过这两本书都是十足的大部头,高级程序设计第二版已经比权威指南去除附录要厚了.
        一本全面且不枯燥的书太难找了,所以我还是喜欢第一版.对我技术上的提升帮助非常之大.忍不住再秀一张图(当时在封闭开发Alimama.com,马云时常来,他不肯在书的第一页签名搞得好像他写的,于是把签名画在了第二页.)


精通JavaScript

        我会把书籍分成两类,一类是全面型,一类是犀利型.前面介绍了一本全面型的书籍,接下来介绍的这本的特点是非常犀利,这类书籍的特点是作者能找对重点(2/8原则掌握的很好),在重点位置深入挖掘.这本书的作者John Resig也是JQuery的作者,他显然是个足够犀利的人儿.JQuery从未承诺解决所有问题,但再一些重点部位的突破,让这个类库如此流行.这本书并没有着重介绍JQuery,还是基于原生的JavaScript和DOM API.
        列一些这本书的重点话题,能够很好的看出作者为什么会开发出JQuery,或者说JQuery为什么是现在的样子:
        1.如何创建可复用的代码?如何调试,测试?(这是基础)
        2.如何判断DOM何时加载完毕?如何遍历,修改DOM?(JQuery以DOM为核心,节点的增删改查,事件响应是重点)
        3.如何确定元素的位置,相对于页面/屏幕?如何做平滑的动画?(思考下CSS相关的话题很多,作者为什么选了这两个?)
        4.如何改进表单验证,封装完整的Ajax程序?(涉及数据交互,是另一个重中之重.)
        不算厚的一本书,基本上就是以上的话题+几个实例.当我们看过了一本全面型的书籍,对前端的知识有了深入的了解之后,这本书的作者指出了今后的重点,并告诉大家如何把知识用到解决重点问题上.

JavaScript语言精粹

        推荐大家看看阮一峰老师的博文<JavaScript诞生记>,JavaScript是Brendan Eich大神10天时间设计出的语言,现在成了Web前端领域的唯一语言.
        一方面这门语言博采众家之长,也帮助它维系了长久的生命力:
        "1.借鉴C语言的基本语法;
         2.借鉴Java语言的数据类型和内存管理;
         3.借鉴Scheme语言,将函数提升到"第一等公民"(first class)的地位;
         4.借鉴Self语言,使用基于原型(prototype)的继承机制。"
        另一方面"由于设计时间太短,语言的一些细节考虑得不够严谨,导致后来很长一段时间,Javascript写出来的程序混乱不堪。"Brendan Eich对其这10天工作的评价是:"它的优秀之处并非原创,它的原创之处并不优秀。"

        Douglas Crockford通过<JavaScript: The Good Parts>这本书对JavaScript进行了一次大审判,老道认为JavaScript语言有很多优秀的地方,也有一些鸡肋和糟粕.老道不反对用这门语言,在规避一些鸡肋和糟粕之后它自然是优秀的.
        老道认为JavaScript优美的特性如下:
        1.函数是头等对象(可以作为其他函数的参数和返回值,支持闭包)
        2.基于原型继承的动态对象
        3.对象字面量和数组字面量(构成JSON的基础)
        老道列出了很多鸡肋和糟粕,并提供了JSLint这个工具,来校验代码是否使用了不好的部分.书中给出的语法图让我有深入学习一下<编译原理>的冲动,也理解了JSLint作为用JS语言分析JS语言的工具成型的理论基础.
        强烈建议大家使用JSLint来检测自己的代码,但是我们不必教条,可以违返其中一些的检测规则,只要我们清楚老道为什么会设置这个规则,有什么风险?若我们不遵守这个规则,是否能回避相应的风险.
        我觉得这本书最重要的意义是告诉我们为什么"它是鸡肋,它是糟粕"这是经过前面的学习和大量实践之后,成熟的开发者应该关注的.比如:
        1.hasOwnProperty,老道说它糟粕的原因是因为这不是一个关键字,而是一个Object.prototype上可以被重写的方法.那么这个告诉我们,并不是不要用hasOwnProperty,而是要注意不要覆盖它.
        2.eval的主要问题是性能,大量的eval(类eval)语句降低了JS引擎的性能.而经过测试少量的eval语句+eval大段的JS文本性能并不差,有必要也可以考虑使用.
       
JavaScript设计模式

        这是一本介绍JavaScript面向对象编程以及设计模式非常好的书籍.相对于又一本全面型书籍语言精粹,犀利型书籍登场了.
        我对面向对象的看法是:隐藏细节,方便做大.基于良好的抽象和封装,我们可以方便的自顶而下的设计,自底而上的开发.面向对象的优缺点不是本文的重点,这里不讨论,只能说这是一个非常不错的代码设计实现方法论.
        JavaScript到底是不是一个面向对象的语言,从本质说一定是的,从表象来说OO的不那么明显.我们必须通过一些额外的代码实现诸如,划分公有/私有,接口,继承,多态等特性.由于JavaScript语言的灵活性,实现的方式非常多.这本书的第一部分对常见的两类实现模式:类式继承和原型继承都有非常好的最佳实践总结.所以我的想法是完全读懂它,然后按照这个来做就好了.如果这里介绍的实践足够强大,我们没有必要发明新的继承实现模式了,事实上YUI一直是这种模式,而新的JavaScript引擎甚至引入了Object.create方法,将一些动作写入标准内置在JS引擎中.
        我们应该将视点放在设计模式上,GoF的设计模式那本书里的例子,对于前端开发来说并不都是很好理解,而这本书的例子全部是前端相关,有助于大家理解设计模式的精妙.还有些同学说,即使我不了解GoF的理论,我也在默默的用这些模式了.确实是这样,但我想我们关注设计模式,不光要学会各种模式是怎样的,更重要的是学习到各种模式适合什么场合,不适合什么场合.了解有什么优点,也要了解有什么缺点,你正在默默使用的模式存在隐患么?系统学习之后会对其更有把握.
        前几天听同事说这本书全面断货,不知道是太火,还是印的太少,希望能尽快看到上架.

Secrets of the JavaScript Ninja

        进入第四个批次,这里的书籍多数没有中译本出版.现阶段想开发靠谱的底层类库代码,确实需要啃一些外文书了.英文书很多,没有精力大量阅读,通常读一些口碑较好的书籍.
        另外,到了这个批次,我的阅读量也相当的有限,所以肯定有很多好的内容没有提到,期望大家能继续推荐.而且到了这个批次,书籍产出肯定跟不上知识的更新速度,跟踪阅读一些JS大牛们的Blog应该成为习惯.
        这是JQuery作者的第二本书,自然又是犀利型的代表.John Resig已经陆续放出这本书的大部分内容,从2008年开始写,计划2012年5月出版.
        如果说JR的第一本书能够看出为什么有JQuery,那么这本书能看出让JQuery发展下去,作者关注了哪些.我们会看到其实一些很细节的内容,比如强调测试用例的构建/自动化测试的方法,比如如何利用每个function实例的length属性,比如对with,eval的思考和发散等等.
        关于这本书具体如何的好处,我还理不清,拿来开开眼界是非常不错的.记得玉伯大大组织了一波同学在翻译,不知进展如何了.

JavaScript Patterns

        乍一看这本书标题,以为又是一本讲设计模式的书,那和<JavaScript设计模式>重复了,开始没有仔细关注.今年拔赤推荐了它,才发现者并不仅仅介绍GoF的设计模式而是涵盖前端开发各个方面的先进理论。虽然是09年的书,这两年前端的很多较深刻变化在这边书里都能看到雏形。上一本书犀利,这本更全面。
        作者Stoyan Stefanov是Yahoo的前端技术专家,从这本书中可以看到很多YUI3设计上的本源,比如在对象创建模式中介绍的模块模式/沙箱模式.近来CommonJS Loader的流行在这之上的继续深入发掘.这本书还包括代码测试,打包,部署,加载策略等各个流程中的诸多细节,这些构成了完整的体系在Yahoo在YUI3都有非常好的实践.
        听说我们的同事拔赤和一舟在翻译这个本书,非常期待.

ECMA-262
        这不是一本书,是俄罗斯小伙子写的一系列ECMA-262标准分析文章,ECMA-262-3系列已经很完整.标准像汇编语言一样枯燥,而这系列文章把枯燥的标准转化为一系列深入讨论的话题,配合恰到好处的示例,一定会让大家对JS引擎的认识再上一层.
        网上有一些译文,但是由于类似文章译文比较少,很多英文还未达成一致表述,所以推荐阅读英原文.另外作者很好,遇到的棘手的问题,去咨询他都能很快收到很好的回复.

期待:一本JavaScript语言作者或引擎实现者写的书
        一直以来期待JavaScript能有一本像C语言的K&R这样的大作,最近也在读计算机系统概论补一些大学时没学好的知识,非常认同书中"自底而上"的学习路线.我想对JavaScript引擎的透彻分析,能够减少大家看着实验结果,猜测着写书的境况.随着NodeJS的火爆,引擎的技术分析文章越来越多,期待很快出现集大成者.

高性能网站建设指南  进阶指南  高性能JavaScript

        进入番外篇,推荐的书籍都是有针对性的领域之作,内容往往并不高深,大家根据自己的实际情况进行选择阅读.
        高性能的网页是前端必然的追求,Steve Sounders率先在Yahoo开启了这方面的专题研究,伴随着<高性能网站建设指南>的出版和YSlow工具发布.网站性能优化,特别是前端角度和运维角度的优化方案,进入了人们的视野,同时获得了巨大的效果,甚至形成了名为WPO(Web Performance Optimization)产业.
        第一本书除了介绍了能够立竿见影的规则的同时也开启了民智.大家开始思考如何做优化,如何结合自己的应用实践做优化.而后两本书基本上是遵循优化思路的继续得来的实践总结.关于优化的工具,思路,方法是我特别强调的.感兴趣的同学可以看下在Yslow 34 Rules之后 -- 网站性能优化思路和进展 这一篇.

其他领域之作

        接下来介绍这些专题类书籍,并不是特别推荐,往往每个专题都有很多书籍可供选择,随手写一些读书心得吧.
        Ajax实战:06年的书,很早就购入.书中介绍了很多RIA高级应用的相关话题,很开眼界.
        JQuery实战:一定需要一本介绍JQuery的书,这书还可以,不过现在看来应该比较旧了,JQuery已经更新了很多.我主要从这本书了解了JQuery的工具函数扩展机制和插件机制是如何实现的.JQuery让完全不了解prototype属性的同学也能写出可复用的复杂组件,非常不容易,以后再单独写写对JQuery的一些看法吧.
        精通CSS:一定需要一本介绍CSS的书,工作中一直以来CSS用的不是很深入,不做特殊介绍.
        正则表达式必知必会:一定需要一本正则方面的书籍,这本小册子查起来蛮方便.


        HTML5揭秘和HTML5高级程序设计买回来一直没看,对HTML5的新增特性还是有了解的,等能用到时再看再评.

        希望看到NodeJS方面的书籍,尽快引入.


写在最后
        我只能推荐我看过的书对吧,所以大家懂的.
        我们不去对比各种电子产品,就是对比鸡蛋大米,书籍都是非常廉价的.
        当有了领域内一定的实践经验之后,阅读一本相关的书籍并不是难事,也并不会耗费很多时间.
        全面型的书籍可以让大家技能水平Step By Step的稳步提高,让大家站得高也站得稳.
        犀利型的书籍可以让大家了解重点,了解别人是怎么运用那些你也会的知识的.
        专题类的书籍是拓宽眼界,帮助大家完成工作任务的好手.
        对于非英文专业的同学,如果有中译本,不用非得纠结着去看原版,我们要最快学到知识,最快进入思考与实践.
        感谢作者,译者(我的同事中有很多译者,都说指望这个赚钱是不可能的),以及选择运作这些书出版的各位老师

 

分享到:
评论

相关推荐

    2008新书_JavaScript and Ajax Tools for Great Web Experiences

    《2008新书_JavaScript and Ajax Tools for Great Web Experiences》一书,主要聚焦于JavaScript与Ajax工具在创建卓越网络体验中的应用。本书不仅深入探讨了Dojo框架,一个强大的JavaScript库,用于构建高性能、高...

    精通JavaScript(图灵计算机科学丛书)_javascript_

    JavaScript,一种广泛应用于Web开发的脚本语言,是前端开发的核心技术之一。它诞生于1995年,由网景公司的Brendan Eich设计,最初被命名为Mocha,后改为LiveScript,最终在 Netscape Navigator 2.0 浏览器中以...

    JavascriptAPI.rar_javascriptAPI手册_javascriptapi

    特别的是,书中还深入讲解了JavaScript的一些陷阱和最佳实践,有助于开发者写出更健壮、更高效的代码。 在JavaScript API中,DOM API是关键部分。它将HTML或XML文档结构化为一个节点树,开发者可以通过这个树形结构...

    JavaScript 程序开发手册.rar_javascript_javascript manual_javascript 手册

    JavaScript,一种广泛应用于Web开发的轻量级编程语言,由Netscape公司的Brendan Eich在1995年创造,最初是为了增强网页的交互性。随着时间的推移,JavaScript已经成为构建动态、响应式网站不可或缺的一部分,不仅...

    疯狂HTML5_CSS3_JavaScript讲义_原书光盘

    《疯狂HTML5_CSS3_JavaScript讲义_原书光盘》是一本专注于网页开发技术的书籍,由知名作者李刚编写。李刚以其程序员的独特视角,深入浅出地介绍了HTML5、CSS3和JavaScript这三种核心的前端技术,旨在帮助读者从软件...

    Object_Oriented_Javascript

    以上概述了《Object_Oriented_Javascript》一书中的主要内容,涉及了JavaScript的基础知识、面向对象编程的核心概念以及具体实现细节。这些知识点不仅适用于初学者,也对希望深入了解JavaScript内部机制的开发者非常...

    JavaScript语言与Ajax应用第二版_JavaScript语言与Ajax应用_JavaScript应用_javascri

    书中会介绍如何结合JavaScript和Ajax技术来实现这些功能,提高网页的响应速度和用户体验。 7. **跨域通信**:由于同源策略的限制,Ajax默认不能跨域请求数据。但通过JSONP、CORS(跨源资源共享)等技术,可以突破这...

    Pro_JavaScript_Design_Patterns

    书中还讨论了JavaScript中的模块化和面向对象编程,以及如何利用这些概念来实现设计模式。例如,AMD(Asynchronous Module Definition)和CommonJS是两种常见的模块化解决方案,它们在JavaScript中实现依赖注入和...

    网站开发编程html_css_javascript教程书籍

    这个教程书籍很可能是针对初学者和有一定经验的学习者,旨在全面介绍这三个技术的基础知识,同时也可能涵盖了进阶话题,如JavaScript的面向对象编程、CSS预处理器(如Sass和Less)以及现代前端框架的使用。...

    pp.rar_antenna_balanis_javascript

    在“pp.rar_antenna_balanis_javascript”这个压缩包中,我们很可能是找到了与这本经典著作相关的JavaScript代码或工具,可能用于辅助理解和计算天线的相关参数。 首先,让我们详细探讨一下天线的基础知识。天线是...

    Eloquent_JavaScript.pdf

    《Eloquent JavaScript》是一本由Marijn Haverbeke所著的JavaScript入门教程书籍,面向编程新手。本书不仅介绍了编程语言JavaScript的基础,还涵盖了一些高级特性,如函数式编程概念。它采取纯英文的表达方式,以...

    [nixon_robin]_learning_php,_mysql_&_javascript__w.pdf

    这样的教材对那些希望通过自己动手实践来学习编程的读者非常有帮助。 在学习这些技术的同时,读者也应该注意学习相关的安全知识,因为这些技术如果使用不当,可能会引发安全风险,例如SQL注入攻击、跨站脚本攻击...

    Nicholas_C_Zakas-The_Principles_of_JavaScript-EN.pdf

    本书适合那些已经使用过传统面向对象编程语言并希望更好地理解JavaScript的面向对象特性的开发者。 关于作者Nicholas C. Zakas,他是Box公司的软件工程师,致力于写作和演讲关于JavaScript最佳实践的内容。他在雅虎...

    JavaScript 语言参考_javascript_js_

    JavaScript,作为一种广泛应用于Web开发的脚本语言,是互联网上实现动态交互的重要工具。它主要在客户端运行,赋予网页活力,使用户与网页之间能够进行实时互动。"JavaScript 语言参考" 是一本全面涵盖JavaScript...

    高性能JavaScript_编程_javascript_js_

    6. **性能优化**:书中会介绍如何通过优化DOM操作、减少重绘和回流、合理使用缓存、以及优化循环等方式来提升JavaScript代码的运行效率。 7. **错误处理**:学习如何有效地捕获和处理错误,使用try...catch结构,...

    DHTML_and_JavaScript

    《DHTML和JavaScript》 DHTML(Dynamic HTML)与JavaScript是Web开发中的两个关键技术,它们共同为网页带来了交互性和动态效果。本章将深入探讨这两个概念及其在实践中的应用。 首先,DHTML是一种技术集合,它包括...

    HTML_CSS_JavaScript网页制作从入门到精通

    书中可能包含实例解析、代码练习,以及对最新技术趋势的探讨,如Web组件、Flexbox和Grid布局、以及Vue或React等前端框架的介绍。 总之,掌握HTML、CSS和JavaScript意味着掌握了构建现代网页的核心技能,无论你是...

    readk.it-javascript_it_javascript_epub_epubReader_

    标题中的"readk.it-javascript_it_javascript_epub_epubReader_"表明这是一个使用JavaScript编写的电子书阅读器项目,特别针对EPUB格式的书籍。这个项目可能是为了展示如何利用JavaScript技术来实现一个轻量级、可...

    JS.rar_javascript

    JavaScript,简称JS,是网页设计中的重要脚本语言,它主要负责实现网页的动态效果和交互功能。在当今互联网世界,JavaScript已经成为了不可或缺的一部分,无论是在客户端还是服务器端,都有其广泛的应用。这个名为...

Global site tag (gtag.js) - Google Analytics