前端Javascript书籍分享

早前在公司曾做过一些关于前端的技术分享,而每每跟大家谈到深处时,大家会疑惑这些知识点从何而来。

我会经常在内部去推荐自己读过的好书,希望大家在技术层面上都能更上一个台阶。

今天写下这个帖子一方面是记录自己在一年多时间里快速转变为前端人所度过的好书,另一方面也希望将这些好书分享给大家,

不希望前端人只是为了完成业务而学习,需要有求索的心态和积极性。

大概两年前,我是一个纯正的Javaer,不过在面临公司产品转型的路上,我开始接触基于Web的产品开发以达到跨平台的效果。

于是,慢慢走上了前端道路,带着学习Java的习惯开始逐步探索Javascript。

这一路,从接触语法到理解动态语言特性,从不了解javascript的this到理解执行作用域,从模拟Java继承到理解原型继承,

从一大堆全局变量到模块化,从过程式编程到面向对象编程,从强耦合到组件化,从一大堆事件绑定到数据驱动,从手工压缩到

借助工具构建工程,经历了很多前端人经历的东西。因为前端太多东西并未标准化,致使入门虽低,但想比肩高手,还是需要学习太多太多。

在分享书籍之前,我分享这些一路走过来的经历,是希望可以为大家强化学习之路,不要一直游离于表面。

在前端界,我知道虽然Javascript并不能像Java那样强大的去完成各种线程、IO、网络等功能,但那不是因为Javascript语言本身的局限,

而是不能像Java那样强大的背景和社区为Java提供各种标准化的东西。如今,Node来临,如果前端同学们想在Javascript上有一番作为,

Node可提供你们无限的想象,可以完成你们曾经觉得只有Java这类语言能完成的事情。

我本出身后端,对UI上的东西不敏感,因此我对CSS了解颇少,只能给大家提供一些Javascript方面的书籍,以打好Javascript能做一些的基础。

另外,我不想推荐一些完全对编程无概念的入门书籍,所以只推给一些有基础且愿意深入研究的同学。

接好,一大票书籍来了,先列上书目,关于为何推荐此书将在之后详细补充。

第一波:适合有基础,想系统学习Javascript语言特性及原理的同学

1.JavaScript高级程序设计(第3版)

2.JavaScript权威指南(第6版)

第二波:适合对Javascript有一定理解,想深入学习语言特性和设计的同学

3.JavaScript语言精粹(Javascript Good Parts)

4.Javascript设计模式(Javascript Design Pattern)

5.Javascript 模式(Javascript Patterns)

6.ECMAScript5.1(Javascript规范)

特别推荐:

汤姆大叔的博客 这几乎是我走向深入Javascript的启蒙教程

The Surprisingly Elegant Javascript Type Model详细描述了Javascript中的类型继承关系,Object、Function、Array之间的相互关系

End of the Chain详细描述了Javascript中prototype/__proto__的含义,Function、Object之间的相互关系

第三波:适合在前端单页应用项目构建上深入和优化的同学

7.MVC的JavaScript Web富应用开发

8.单页Web应用 JavaScript从前端到后端

第四波:适合对前端项目进行优化和改进的同学,此波颇具实际意义

9.高性能网站建设指南

10.高性能网站建设进阶指南

第五波:适合开始考虑在Node上有所施展的同学

10.深入浅出Node.js

11.Node.js权威指南

最后一波来个大集合,此类不为书籍,而是各类基础框架源码,适合有意愿创造自己前端类库或框架的朋友。

1.Underscore:基础类库,封装了对对象、数组、集合、函数的操作和一些实用函数;

2.jQuery:大名鼎鼎,基础类库,封装了各类选择器、DOM操作、事件、回调、延时执行、队列操作、数据绑定、AJAX等;

特别感谢:Araon的源码分析

3.Backbone:轻量型前端MVC框架,封装了事件、模型、集合、视图、控制器和路由管理等功能;

4.RequireJS:前端模块化功臣,解决了模块依赖,异步加载等;

当然,有各种关于Javascript的书籍是不足于写出优秀的代码和类库的,在这里推一些关于代码编写和设计模式的好书:

1.重构-改善既有代码的设计

2.设计模式-可复用面向对象软件的基础

以上这些书籍都是我已读或还在读的书籍,推荐给大家,希望大家前端之路一路光明,逃离混沌的前端世界。

还有一点需要说明,如果深入理解这些知识点,去面试一些所谓的前端开发岗位可能被拒,因为大量前端开发岗位仍是传统的业务型岗位,

需要运用CSS/HTML/Javascript去真正做一些项目,所以如果有空,可以去翻翻关于CSS/HTML方面的书籍。

我将在前端之路毫不停歇的一路向前,也希望有更多的更好的前端工程师加入这个队伍。