前端开发推荐阅读的书籍

posted @ Feb 20, 2016 • 前端笔记

摘要:「前端领域学习曲线,相信进入这个领域的,都大概了解一些。入门是比较快的,HTML标记语言准确来说算不上编程语言,学起来快(不过HTML是最用不好的),但是越到后面,曲线越来越陡峭,因此,有必要做一个清晰的规划,比如前端书籍,以及视频资源。本文先介绍一些纸质的书籍,后面还附有海量的前端资源。有了领域内一定的实践经验之后,阅读一本相关的书籍并不是难事,也并不会耗费很多时间.所以阅读书籍的同时不要忘记动手,经验来自手下,熟能生巧……」

前言

  前端工程师在中国兴起也就5年左右,以前公司里没有专门前端工程师的这个职位,很多前端方面的任务都是由全栈工程师来完成,有的基础一点的后台或者设计的帮助分担一些。但是随着互联网的快速发展,特别是所谓的Web2.0的发展,前端业务变得复杂起来,需要有专业的前端工程师来满足用户多样化的需求。

  然而,高校的计算机教育并没有跟上互联网快速发展步伐,现在高等学校里没有的前端课程,对于需要打基础的前端同学来说学习起来比较困难。 学校里没有前端的课程,那如何学习JavaScript,又如何使自己成为一个合格的前端工程师呢? 如果入职了,可以在项目中学习和跟着有经验的同事学习,而对于还没有入职的同学,书中就有着相对完整的知识体系,每读一本好书都会带来一次全面的提高。但如果深一脚浅一脚的学习,写出代码的质量会参差不齐。初学者的首要任务是成为靠谱的熟练开发者,能够稳定的输出有一定质量的代码,这样才能让人放心的把任务交给你。不过前端本来就是一门杂而多的领域,刚进入前端,可能难度不大,但是要进一步系统深入放入学习,思路就不会那么清晰。前端书籍又难以正确挑选,很容易就会迷茫。废话不多说,入正题。介绍一下前端学习的一些书籍.

  前端领域学习曲线,相信进入这个领域的,都大概了解一些。入门是比较快的,HTML标记语言准确来说算不上编程语言,学起来快(不过HTML是最用不好的),但是越到后面,曲线越来越陡峭,因此,有必要做一个清晰的规划,比如前端书籍,以及视频资源。本文先介绍一些纸质的书籍,后面还附有海量的前端资源。有了领域内一定的实践经验之后,阅读一本相关的书籍并不是难事,也并不会耗费很多时间.所以阅读书籍的同时不要忘记动手,经验来自手下,熟能生巧……

学习路线

大部分技术,熟读下列四类书籍,就是一个很好的学习提升

  • 入门,用浅显的语言和方式讲述正确的道理和方法
  • 全面,巨细无遗地探讨每个细节,遇到疑难问题时往往可以在这里得到理论解答
  • 实践,结合实际中经常遇到的情景环境,来描述如何设计和解决问题
  • 深入,讲解一些文化,思路,甚至于哲学上的东西,真正做到深入一种语言去编程,如unix编程艺术,程序员修炼之道等等

接下来介绍的这些书籍,没法说这是前端学习最优路线,但真看进去了获得一个IT民工从业资格是没啥问题的。

Web标准和HTML

说明:HTML和Web标准这里就不介绍书籍了,这个书籍的话也没有什么代表性的。HTML知识不多,主要就是要领悟Web语义化的精髓,结构决定上层建筑。Web标注大家去W3C中国官网去查找,按照标准来,写多了,自然就理解标准了。但是HTML5的话还是需要一本工具书的,我用是国产的《HTML5与CSS3权威指南》。不过感觉并不是很好。《HTML5高级程序设计》还不错。

Alt text


书籍推荐(CSS系列)

推荐书籍:

  • 《CSS那些事儿》
  • 《精通CSS(高级Web标准解决方案)第二版》。
  • 《图解CSS3:核心技术与案例实战》

理由: 1. css那些事儿,是一本介绍css基础类的书,是入门的经典读物。系统的介绍了css的选择符,伪类,工作环境,盒模型,两列,三列自适应布局。文字样式,图片处理,列表,表单,还有选项卡,相册,导航,新闻列表等其它大部分的实践。
   2. 精通css,这书已经出到第二版了,相比第一版,第二版的大部分目录结构保持不变,内容变得更丰满了。此书从一另一个视角介绍了css的博大精深。我通读了三遍,觉得作者心思细腻,真的吧这个职业做的很标准。绝对值得去读,对CSS有着很好地指导作用。    3. 大漠,W3CPlus,Sass中国创始人,目前就职于手淘。中国Drupal社区核心成员之一。对HTML5、CSS3和Sass等前端脚本语言有非常深入的认识和丰富的实践经验,尤其专注对CSS3的研究,是国内最早研究和使用CSS3技术的一批人。CSS3、Sass和Drupal中国布道者。2014年出版《图解CSS3:核心技术与案例实战》。CSS3值得参考的书籍!


书籍推荐(JS系列)

第一批次

入门级,也适合想掌握一些前端技能的非前端工程师 ,我学Javascript看的第一本书,讲的很细致,全书贯穿着一个理论"渐进增强,平稳退化"!

第二批次

成为一名合格的前端工程师 (或) <精通JavaScript>,任何一本都有的读了,我用的红皮书第三版。完整的学完第一遍都是不容易的,真心话。

第三批次

更优秀的代码,更优良的设计 <高性能的Javascript> 其中蝴蝶书系列,本本经典!

第四批次

  从语言细节到复杂工程实践,想开发靠谱的各类底层代码,应该看看<Secrets of the JavaScript Ninja> <JavaScript Patterns> <ECMA-262 in Detail> 应该重视跟踪阅读一些大牛们的Blog了!

番外篇

各类专题书籍,读好第二批次书籍之后,有精力就接触下

  • <锋利的jquery>
  • <高性能网站建设指南>
  • <高性能网站建设进阶指南>
  • <高性能JavaScript>
  • 《Ajax实战》
  • 《JQuery实战》
  • <精通CSS>(或)
  • <正则表达式必知必会>(或<正则表达式权威指南>)
  • 《HTML5与CSS3权威指南》
  • 《NodeJS开发指南》
  • <深入浅出Node.js>

找书技巧

关于一个主题的书很多,那我们怎么找到一本合适我们阅读的书呢?因为适合自己的才是最好的。下面是一些些小技巧:

在各大图书网(如当当、亚马逊、京东等)上搜索关键词,如jQuery,可以选择按照销量或好评排序,一般排在前面的就是很抢手的好书,值得阅读 如果想看一本书的评价怎么样,那就去豆瓣读书搜索吧,那里的评论还是值得参考的

  JavaScript Dom编程艺术

第二版链接,可以看看豆瓣中的评论

Alt textAlt text

这本书是很多大神推荐的Javascript入门的首选书,我就在当当上,买下了这本书,通读全篇。感觉作者真的是一个很细致的工程师,总是在强调”渐进增强,平稳退化”的原理。重视用户体验!

知识点前后很连贯,适合初学者打开前端Javascript的大门,当然要想知道Javascript的细节和深入放入原理,当然得继续往下看!


JavaScript高级程序设计

第三版链接

Alt textAlt textAlt text

如果说《javascript权威指南》是一本字典,那zakas这本《javascript高级程序设计》可以算是一本由浅入深的好读物。

推荐这本,再搭配权威指南那本书,基本看完后,对js就有一定程度的深入了。不过要先全部领悟因为并不是那么简单的。

看下这本书的目录,大体上把JS涉及到的概念都讲了一遍,而且非常通俗。第三版还加上了很多新知识,对HTML5有很大的补充。
书中涉及的概念基本涵盖了js的大部分内容,包括作用域链、js数据类型、OOP对象在js中的实现、闭包、BOM和DOM模型、对变态IE的系列兼容的解决方案、事件流、还有xml、jason、E4X这些数据格式与js的交互操作简介、高级技巧的介绍(比如惰性载入)等等,大量的例子,配上详细的讲述,理解起来不会太费解,当然了,这本书你前后至少要翻上几遍……

看书的过程中会遇到蛮多问题的,你需要去goole找出答案。

不管怎么样,虽然这本书叫《js的高级程序设计》,但我觉得是内容涉及的比较多,而且深而已,对初学者的门槛还是不高的,如果担心的话,再拉《javascript权威指南》陪着看好了,我就是这么做的。

下面这些资源都蛮不错的,推荐给入门的朋友:mozilla的开发文档MDN、Quora、StackOverflow


精通JavaScript

豆瓣书籍,精通JavaScript

Alt text

我会把书籍分成两类,一类是全面型,一类是犀利型.前面介绍了一本全面型的书籍,接下来介绍的这本的特点是非常犀利,这类书籍的特点是作者能找对重点(2/8原则掌握的很好),在重点位置深入挖掘.这本书的作者John Resig也是JQuery的作者,他显然是个足够犀利的人儿.JQuery从未承诺解决所有问题,但再一些重点部位的突破,让这个类库如此流行.这本书并没有着重介绍JQuery,还是基于原生的JavaScript和DOM API.

列一些这本书的重点话题,能够很好的看出作者为什么会开发出JQuery,或者说JQuery为什么是现在的样子:

1.如何创建可复用的代码?如何调试,测试?(这是基础) 2.如何判断DOM何时加载完毕?如何遍历,修改DOM?(JQuery以DOM为核心,节点的增删改查,事件响应是重点) 3.如何确定元素的位置,相对于页面/屏幕?如何做平滑的动画?(思考下CSS相关的话题很多,作者为什么选了这两个?) 4.如何改进表单验证,封装完整的Ajax程序?(涉及数据交互,是另一个重中之重.)

  不算厚的一本书,基本上就是以上的话题+几个实例.当我们看过了一本全面型的书籍,对前端的知识有了深入的了解之后,这本书的作者指出了今后的重点,并告诉大家如何把知识用到解决重点问题上.


JavaScript语言精粹

最新的修订版

Alt textAlt text

推荐大家看看阮一峰老师的博文,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设计模式

最新版的地址

Alt text

这是一本介绍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

乍一看这本书标题,以为又是一本讲设计模式的书,那和重复了,开始没有仔细关注.今年拔赤推荐了它,才发现者并不仅仅介绍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的稳步提高,让大家站得高也站得稳.

  • 犀利型的书籍可以让大家了解重点,了解别人是怎么运用那些你也会的知识的.

  • 专题类的书籍是拓宽眼界,帮助大家完成工作任务的好手.

  • 对于非英文专业的同学,如果有中译本,不用非得纠结着去看原版,我们要最快学到知识,最快进入思考与实践.