做为一名前端开发人员,若是你告诉我你没有看过任何关于前端的书籍,那么我彻底能够认为你不是一名合格的前端开发工程师。为何我要以“看书”来衡量合格前端的标准?由于前端做为一个特殊的极具变化与开拓性的工种,没有较强的自我学习与思考能力,很难在这激烈又纷杂的环境里存活而不被淘汰,而“看书”则是最基本的自我提高与补充知识的途径。javascript
书中自有黄金屋。无论你是想涉猎前端抑或进行系统性的学习,我都推荐你们阅读前端的相关书籍。那么对于想入门或者扎实前端基础的童鞋来讲咱们应该挑选哪几本适合咱们的书籍呢?下面我就推荐5本带我踏入前端并产生较大帮助的图书供你们参考。html
这本书是前端开发领域的经典之做,是一本扎实前端基本功,规范咱们前端代码的实践性书籍。本书主要讲解了HTML、CSS、Javascript以及移动端开发的最佳实践方案,可以对缺少良好指导的开发者产生很大的帮助。经过阅读本书咱们能够掌握如何编写高可读性、高维护性、高性能的HTML、CSS以及Javascript。好比:前端
<!-- 若是class名称仅做为Javascript调用的“钩子”,可在名称中添加“js”前缀 -->
<ul id="js_mylist">
<li class="menu js-active">Web前端开发最佳实践</li>
<li class="menu">编写可维护的Javascript</li>
<li class="menu">锋利的jQuery</li>
<li class="menu">图解HTTP</li>
<li class="menu">Javascript设计模式与开发实践</li>
</ul>复制代码
<!-- 为了作到禁用脚本时页面自动跳转,百度首页中添加了以下代码 -->
<noscript>
<meta http-equiv=refresh content="0; url=http://www.baidu.com/baidu.html?from=noscript">
</noscript>复制代码
本书是我极力推荐的一本帮助你们改善Javascript编程风格与编码规范的书籍。那么为何咱们要如此注重JS的编码规范?引用高德纳的一句话就是:程序是写给人读的,只是偶尔让计算机执行一下。在咱们的平常开发中,每每维护代码的时间占据着很大比重, 既然这样那么为何咱们不在编写代码的时候就重视它呢?如下是书中的两个例子:java
// 二元运算符先后必须使用一个空格来保持表达式的整洁
// 好的写法,使用空格
for (i = 0; i < count; i++) {
process(i);
}
// 很差的写法,丢失了空格
for (i=0; i<count; i++) {
process(i);
}复制代码
// 函数的第一个单词名称应该是动词(而不是名词),以免与变量混淆。
// 好的写法,第一个单词是动词
function doSomething() {
// 代码
}
// 很差的写法,第一个单词是名词
function car() {
// 代码
}复制代码
这本书应该算是学习jQuery必读的一本书,也是讲解jQuery的经典之做。在正式学习这本书以前,你有必要先了解下原生Javascript,才能领悟jQuery其“write less, do more”的理念。本书深刻浅出的介绍了jQuery的代码风格、选择器、事件及动画等,结合丰富的实例让读者可以快速理解与应用。好比:jquery
var $ul = $('ul').prev(); // 获取紧邻<ul>元素前的同辈元素
var $p = $('p').siblings(); // 获取<p>元素的同辈元素复制代码
$('input').trigger('focus'); // 触发输入框focus事件并获取焦点
$('input').triggerHandler('focus'); // 触发输入框focus事件但不会获取焦点复制代码
做为和浏览器打交道的前端开发者,咱们理应学习关于页面从请求开始到呈现的过程和实现方式,而这本书即是快速了解HTTP请求背后原理的不二之选。本书结合漫画图片的形式讲解HTTP协议、工做机制、报文及状态码等,图文并茂,通俗易懂。示例:web
// 请求首部字段
Host: www.hackr.jp // Host会告知服务器,请求资源所处的互联网主机名与端口号
Range: bytes=5001-10000 // 告知服务器资源的指定范围复制代码
// 响应首部字段
Age: 600 // 告知客户端,源服务器在多久前建立了响应
Retry-After: 120 // 告知客户端应该在多久以后再次发送请求复制代码
之因此把这本书放在最后是由于阅读这本书须要必定的Javascript基础与功底,当咱们掌握了JS的语法与编码规范后再来翻阅此书,你会得到别样的收获。那么为何咱们要研究设计模式?使用设计模式可以给咱们解决怎样的问题?算法
我想答案和小说家为何不多从开始设计剧情,足球教练为何也不多从头开始发明战术同样,他们老是沿袭了一些已经存在的模式来解决问题。下面是书中的两种模式:编程
// 单例模式: 保证一个类仅有一个实例,并提供一个全局的访问点
var getSingle = function(fn) {
var result;
return function() {
return result || (result = fn.apply(this, arguments));
}
};复制代码
// 策略模式:定义一系列算法,把它们一个个封装起来,而且使它们能够相互替换
var strategies = {
"S": function(salary) {
return salary * 4;
},
"A": function(salary) {
return salary * 3;
}
};
var calculateBonus = function(level, salary) {
return strategies[level](salary);
};复制代码
为何那些工做没几年的人很快就遇到了本身的技术瓶颈? 为何那些工做了5年以上的人还写着一手难以维护的代码?我想在以上5本书中即可找到答案。设计模式
固然除了文本中推荐的5本前端入门书籍,还有不少优秀的书籍没能在此一一推荐,请见谅。浏览器
正所谓纸上得来终觉浅,绝知此事要躬行。除了从书中汲取咱们所需的知识外,咱们还须要将理论化为实践,亲自动手敲击键盘,从而加深并巩固书中的知识点,才能羽化而登仙。