学习JavaScript的必备读物

jopen 10年前

常常有人要我推荐学习JS的书籍或者在线教程。看起来每个人都有很好的理由在JS领域有所行动。如果你对让人兴奋的工作机会很感兴趣的又想要玩一玩 有意思的东西,那么JS一定是个很棒的语言。隨著JS的流行度增加,相关的书籍、博客和教程也随之大量增多,但是我不可能所有的资源都了解过,但是我看到 了一些很不错的东西也想在这里分享给你。

书籍

请注意,在这里我只会推荐我已经看过的书籍,你肯定可以发现有无数的书和我推荐的一样好。

Nicholas Zakas:JavaScript高级程序设计

这本书一直都是我推荐书单上的第一名,也是我总和任何JS开发者建议的总放在书架上的一本书。Nicholas Zakas所写的这本书非常非常奇妙:它概括了JS这门语言主要的知识点。想要读点基本知识点?你可以在这本书里找到。想要了解JS的OOP思想?也可以 在这本书里找到。想要了解文档对象模型(DOM)?这本书也可以给大家勾画一个大概。本书内容通俗易懂,从JS的基本知识到高级应用都有涉猎概括,因此我 将它推荐给所有的JS开发者。

Stoyan Stefanov:JavaScript设计模式

要了解现在最常见的JS设计模式,以及这些设计模式是如何恰当地管理和组织你的代码。你所选择的设计模式会成为你的应用的基石,当你在思考如何构建 你的站点时,这些设计模式会扮演很重要的角色。Stoyan是这世界上最棒的JS开发者之一,他在Yahoo!和非死book都工作过也曾参与了 YUI的构建。Stoyan很了解他在做的事情,而且他致力于普及将常见的设计模式。

Stoyan Stefanov:JavaScript面向对象编程指南英文版

JavaScript面向对象,请尽情地用你的prototype来嘲笑我好了。因为JS不是传统的基于“类”的面向对象语言。如果你总是在思考原 型集成(prototypal inheritance)和混入(mixin),那么你只会变得很wonky。Stoyan又走在了技术大潮的浪头上,他将这个问题划分成了小问题来解 释。开始的时候他先是稳步解释了一些语言基础知识让你在实践中去学习,但是他又很快地投入到解释OOP是如何工作的,使用者要如实利用JS的语言优势来构 建可重用的对象。

Nicholas Zakas:编写可维护的JavaScript

我们都希望我们的程序可以飞速地运行,所以我们时不时会重构优化代码。从学校学习中汲取知识很酷但是我更倾向于从前人的经验中获取资源。这本书将会告诉你如何优化你的代码以提高性能。

David Herman:编写高质量的JavaScript

在我第一次看到这本书的时候,我并没有100%肯定它就是我想要,我觉得它更像是把其他JS书籍中的内容进行整合然后编写出来的。但是我看到 Dojo的作者Alex Russell和Chrome Frame fame都推荐了它,我还是买下了它,现在我很庆幸当时的举动。本书的作者是Mozilla TC39的代表,同时也是(无论是学术层面上还是工业界层面上的)编程语言领域的专家。这本书的优点之一就在于,它并没有在针对JS这门语言来阐述,它所 提供的种种方法是希望编程人员能发挥语言的最大作用。本书中澄清了编程语言的每一部分是怎么工作的(比如约束、柯里化或者自动添加分号)。这本书一定适合 希望他们对JS的理解能够更上一层楼的编程人员。

John Resig and Bear Bibeault: Secrets of the JavaScript Ninja

不论你对jQuery抱有什么态度,不可否认的是John Resig(jQuery之父)确实创造除了最受欢迎JS库,同时凸显了JS的作用增加了JS的灵活性。这本书花了4年时间完成,但我觉得等待4年一点都不过分。

JavaScript 的那些书

淘宝前端工程师 Limu 力荐

彩蛋

我知道大家手头比较紧,所以如果有免费的资源是最好的。我很幸运地找到了一个提供一些免费资源的站点。由Revolunent创办的JSbooks提供了一些质量不错的在线资源:

博客

许许多多的人都在博客上分享他们的故事、想法……我们很难辨认出到底要持续关注谁的博客。随着阅历的增加,我尝试着把关注的博客的数量降低,下面这些是我诚挚推荐,认为它们非常有用的:

DailyJS

名字已经说明了一切。这个站点提供了前后端的JS相关的新闻和教程。它还会定期整理jQuery的插件。

Nicholas Zakas

我并不是Nicolas的粉丝,但是他写的博客确实和他的书一样棒,他的博客中提到的JavaScript的高级应用我认为每一个开发者都要铭记在心。

David Walsh

David努力成为一个很优秀的开发者,他参与了MooTools和Dojo框架的开发,现在在Mozilla工作,他的博文有极高的可用性。

Badass JavaScript

这也是一个集合报导和教程的站点。常常让我想到过去的Ajaxian,我常在这里寻找各种有意思的库和新的技术。

JavaScript Weekly

这是我唯一会留在收件箱中的邮件订阅,每一周的推送都非常的有一席。说正经的,我不知道Peter Cooper怎么能找到这么多有意思的文章。不过要小心,它可是会伤害你的生产力的。

Addy Osmani

我认为Addy是最天才的开发者之一,在他的博客中可以看到从jQuery promises到AMD的许多知识,而他发表在编写模块化的JS中的内容非常棒。

Peter van der Zee

他是很年轻的开发者,但是Peter的JS知识非常丰富,我相信他会成为Web开发的中流砥柱。快去认识他吧。

Juriy Zaytsev AKA kangax

你可以开始订阅Juriy的博客,他是一个生活都离不开ECMAScript的人。

2ality
我从没有和Axel Rauschmayer博士接触过,但是发现这个站点的时候我有一种“我勒个去,这哥们碉堡了”的感觉。当你阅读他的文章的时候,你就会知道为什么我会发 出这样的感慨了。那些文章都写的很有深度,就像接触到了ECMAScript的底层,非常非常的有意思。

Nettuts
是的是的我确实带着偏爱来推荐这个站点的,但是它真的非常非常棒。只要看一看这里的文章你一定会同意我说的。:)

课程

如果你不满足于看书和博客而是想多些一点代码,那有成千上万的课程(线上或线下)供你选择来提升自己的能力:

Nettuts Premium JavaScript Courses(在线)

在这里你不仅可以找到JS的基础课程,还能找到像Backbone这样的JS框架和OOP这类话题的在线资源。

The JavaScript Master Class(在线)

我上了由Thomas Fuchs和Amy Hoy授课的在线课程,个人认为它非常棒,特别是能直接和讲师沟通。

appendTo’s Free JavaScript Training(在线)

8个免费的视频课程帮助你学习JavaScript。

Bocoup Training(线上和线下)

Bocoup有很棒的练习项目,他们提供了一下在线视频,但是他们的个人练习课堂才是精华所在。

Codecademy 的 JS 课程(英文)

Codecademy是一个最容易上手学习如何用JS编程的方式之一。它是一种交互式在线学习平台,非常有趣,你也可以和小伙伴一起来学习。

JavaScript交互式学习课程-初级(中文)

课程让您快速认识JavaScript,熟悉基本语法、窗口交互方法和通过DOM进行网页元素的操作,学会如何编写JS代码,如何运用JavaScript去操作HTML元素和CSS样式,为JavaScript深入学习打下基础。

JavaScript交互式学习课程-进阶(中文)

课程从如何插入JS代码开始,学习JS基础语法、语法、函数、方法等,让你掌握JS编程思路、知识的使用等,实现运用JS语言为网页增加动态效果,达到与用户交互的目的。

JavaScript 教程(中文)

本教程是 W3School JavaScript 教程的入门级版本。内容包括JS基础语法,JS HTML DOM,JS对象,JS Window,JS 库,实例和测验和参考手册。

获取帮助

学习一门新语言最难的地方就是找到组织。当有问题的时候你总会希望有人可以为你解答:

  • JSMentors我和Asen Bozhilov一起创建了JSMentors,希望可以提供一个安全又可以求助的地方给开发者讨论和JS相关的问题。我们想要做一个对初学者友好的站点,所以我们找了一些有名的JS专家来一同回答问题,另外组队也是很棒的想法。
  • StackOverflow我个人认为这个站点本身就是一个非常好的资源,开发者可以在上面发布他们的问题,另外它还有专门的JS的板块也有和JS相关的库比如jQuery的板块。
  • JavaScript Topic:汇聚 JS 优秀内容
  • CSS Topic:汇聚 CSS 优秀内容
  • Reddit上的JavaScript板块

总结

希望今天的信息量没有多到你无法承受,有这么多学习JS的资源真是太棒了,我今天所说的只是冰山一角而已。记住,你需要选择对你最好的方式来学习以 节约你的时间。JavaScript是一门很优秀的语言,只是你需要花一些时间搞清楚它的各种细微差别。谢天谢地,你有很多办法能学到这门语言,也有地方 供你提问。

原文链接: Required JavaScript Reading   翻译: 伯乐在线 - kmokidd
译文链接: http://blog.jobbole.com/73688/