2018 年 JavaScript 学习全景

Avatar of Jason Rodriguez
Jason Rodriguez

DigitalOcean 为您旅程的每个阶段提供云产品。立即开始使用 200 美元的免费额度!

如果你有以下感受,请举手

您在科技行业工作多年,精通 HTML 和 CSS,并且收入不错。但是,您脑海中总有一个声音在不断低语,“是时候尝试一些新的东西了,是时候迈出职业生涯的下一步了。你需要学习编程。”

是的,我也是。

我在科技行业担任过各种角色,将近十年了。我撰写了许多关于设计、编码、HTML 和 CSS 的文章。甚至还写了几本书,并在世界各地的会议上发表演讲。但是,那个声音仍然不断告诉我,我需要学习编程;除非我学会从头开始开发自己的想法和项目,否则我永远不会感到满足。作为一个 Web 开发人员,很显然需要学习的语言是:JavaScript

但是,就像很多人一样,我对当前的 JavaScript 生态系统感到有些畏惧。随着不断涌现的新工具、技术和框架,很难确定从哪里开始学习以及学习什么。尽管如此,我仍然需要从某个地方开始。因此,我认为回顾一下学习资源和工具将是一个不错的第一步。

信息负担

怎么样,以下感受是否也似曾相识?

您之前尝试过学习几种不同的编程语言。您阅读过书籍,订阅过在线课程,并且 Dropbox 中有一堆文件夹里存放着半完成的代码和复制的练习。

我也是。

我学习过Rails 教程笨办法学 Python,但都没有学完。我的书架上摆满了各种各样的巨著,内容从 ActionScript 到 Processing 应有尽有。但似乎什么都记不住。

我可以弄清楚 PHP 文件的作用,并理解一些 jQuery 的内容,但是如果你让我坐下来编写最基本的程序,我很难做到。经过这么多次失败,我认为我找到了问题所在。

每当我开始学习新事物时,我都会尽可能地全身心投入到这个主题中。我买书,看视频,听播客。这与许多公司所推崇的学习新事物的最佳方式相同,无论是编程、烹饪,还是在周末学习普通话。沉浸式学习显然是学习的关键部分。

但问题在于,人们(至少我)在处理信息方面有一个阈值,超过这个阈值就会感到不知所措。我称之为“信息负担”。信息是美好的,但信息过多会压垮大脑,让你筋疲力尽、失去希望,最终放弃并觉得自己是个失败者。

我不想让这次尝试像其他所有尝试一样。我知道我需要沉浸在 JavaScript 中,但我不想陷入 JS 世界的流沙中,最终窒息而死。因此,我决定回顾一下 JavaScript 学习全景,并挑选一些资源——但不要太多——以便我最终能够满足对编程的渴望。

我根据自己喜欢的学习方式(我怀疑其他人也喜欢这样学习)将资源分成了四大类。这些类别分别是:阅读、观看、聆听,以及最重要的是实践。

以下是我找到的一些资源。

阅读

我最喜欢的学习新事物的方式是阅读它们。虽然这主要指书籍,但我也很喜欢用优质的博客填充我的 RSS 订阅源,以及用很棒的时事通讯填充我的收件箱。

书籍

幸运的是,有很多关于 JavaScript 的著名书籍。以下是一些最受推荐的书籍:

当我尝试学习 Python 时,我最喜欢的资源是 Zed Shaw 的Learn Python The Hard Way(笨办法学 Python)。它是一种不含糊的学习方法,通过实际编写代码来学习。虽然他正在编写一本关于 JavaScript 的类似书籍,但目前还没有出版。

我找到的最接近的资源是 Marijn Haverbeke 的Eloquent JavaScript(精通 JavaScript)。据我所知,这是一本很棒的 JavaScript 入门书籍,并且从内容来看,它似乎遵循了 Zed 的 Hard Way 书籍的类似方法:从语言的基本知识开始,并随着引入更高级的概念和项目而逐渐变得更具挑战性。

我列表中的其他所有书籍看起来都非常棒,但大多数似乎都超出了我目前的能力范围。两个例外是 Jon Duckett 的JavaScript and jQuery(JavaScript与jQuery)和 Mat Marguis 的JavaScript for Web Designers(JavaScript for Web Designers)。我喜欢 Jon 的 HTML 和 CSS 书籍,但感觉他的书中使用的视觉化方法不适用于更复杂的话题(至少对我来说是这样)。而 Mat 的书看起来完全满足了我的需求,但似乎深度不足,无法满足长期学习的需求。尽管如此,由于我拥有 A Book Apart 的其他大部分书籍,我可能会用JavaScript for Web Designers(JavaScript for Web Designers)来补充Eloquent JavaScript(精通 JavaScript)

我相信还有很多其他很棒的 JavaScript 书籍,但这些书得等我读完我选择的书后再读。请记住,我想要好的信息,但不要一下子太多

博客

天啊,网上有大量的关于 JavaScript 的博客。实际上,这使得找出哪些博客是好的变得有点棘手。我乐于接受您可能提出的任何建议(请在评论中留下您的建议!),关于我应该关注谁,但我最初的想法是,以下是一些不错的起点:

我遇到了很多其他的博客,但大多数在我目前的学习阶段看起来都太复杂了。或者其他一些博客属于个人,他们主要谈论自己的项目,而不是基础知识或学习过程。不过,我已经将所有这些都添加了书签,以便在我掌握更多知识后深入研究。

时事通讯

正如我之前关于HTML 电子邮件可访问性的文章所证明的那样,我是一个不折不扣的 HTML 时事通讯爱好者。因此,很自然地,我找到了一些时事通讯并订阅了它们。

但我感觉还有更多我还没有找到的时事通讯。我的意思是,几乎任何主题都有时事通讯。鉴于 JavaScript 如此受欢迎,肯定不止我上面找到的两个时事通讯。如果您有任何建议,请通过下面的评论发送给我。

观看

另一种很好的学习方法是观看其他人做你想做的事情。但对我来说,这几乎总是次于阅读学习。尽管如此,当我在某个主题上遇到困难或想更深入地了解编码的某些方面时,观看视频将是一个不错的选择。

总的来说,网上有两种类型的视频:课程和独立视频(主要是在 YouTube 上)。这两种类型的视频都有很多选择,但据我所知,以下是一些最好的视频:

我听说过 Wes Bos 的课程非常棒,所以我会在某个时候深入学习。The Coding Train 和 Fun Fun Function 也是如此。但同样地,我不想被淹没,所以我计划在完成《Eloquent JavaScript》之后再学习所有这些内容。

收听

播客是学习概念和沉浸在特定文化中的一种极佳方式,无需始终盯着屏幕。基本上,这是一种在洗碗或收拾孩子玩具时也能继续学习的好方法。

但是,就像电子邮件时事通讯一样,我发现很难找到好的 JavaScript 播客。四处看看,似乎有很多播客,但大多数都不活跃且过时了。我列出了下面的列表,但我希望大家可以指出更多内容添加到我的播客订阅中。

实践

学习 JavaScript 的最后,也可能是最重要的一部分,就是实际操作:编写代码,使其运行,并重复这个过程。

就像我在开头提到的,我多年来一直在编写 HTML 和 CSS(以及使用其他技术),所以我对某些工具有点偏见。我主要在 Mac 上使用 Sublime Text,所以计划继续使用它在本地编写代码。但是,由于我最近在 iPad Pro 上工作更多,我想用一些额外的工具来增强 Sublime Text,以便在学习过程中编写和测试代码。

主要工具将是 CodePen。我已经订阅了 Pro 一段时间了,并且发现它对于编写代码非常有用,无论我使用什么平台。由于它在浏览器中运行,因此很容易在我的 iPad 上打开一个代码片段,无论我是在咖啡馆闲逛,都可以轻松获得一个完整的 JS 开发环境。它还有一些我认为在某个时候会派上用场的特性:当我想要保密一些尴尬的代码时,可以使用私有代码片段和集合;当我想要处理更重要的内容并将其托管在某个地方而无需任何麻烦时,可以使用项目;如果我需要实时请求朋友帮助我解决一些棘手的代码,可以使用协作模式。

我查看了其他工具,如 JSFiddle 和 JSBin,但我对 CodePen 比较熟悉,并且它的功能很强大,所以我坚持使用它。

我计划在某个时候使用的另一个在线工具是 Glitch。它是一个相对较新的编写代码并在网上分享的工具,并且围绕它建立了一个非常多元的社区。虽然我认为我的大部分编码将在 CodePen 或本地在 Sublime Text 中完成,但我认为 Glitch 在学习更复杂的东西(例如与 API 交互、创建奇怪的机器人和测试一些可怕的框架)时将至关重要。

我的学习计划

因此,考虑到以上所有资源,以下是我计划在未来几个月内学习 JavaScript 基础知识的内容。

  • 学习《Eloquent JavaScript》
  • 在 Sublime Text 中本地编写代码,但在 CodePen 中主要在线编写
  • 通过我找到的博客、时事通讯和播客了解最新资讯
  • 在我完成《Eloquent JavaScript》之后,深入学习 JavaScript 30 和 ES6 for Everyone
  • 在我完成 Wes Bos 的教程后,开始学习上面列出的视频和书籍
  • 在此过程中构建一些(希望是)很酷的东西

不过,学习最重要的方面之一是获得对你实际操作的反馈。为此,我将寻求一些朋友以及任何想要参与的读者的帮助。

我在 CodePen 上创建了一个新的集合,用于在整个学习过程中存放我的 JavaScript 项目。我将使该集合公开,以便任何人都可以看到我在做什么,分叉示例,并指导我以最佳方式做事。如果这符合你的兴趣,请 在 CodePen 上关注

最后,如果你有任何其他资源或对上面列出的资源有强烈意见,请在下面的评论中告诉我。我相信你们中的很多人经历过类似的学习过程,并有一些很棒的技巧可以分享。我很乐意听到你的想法,所以请在这里在 CSS-Tricks 上或 给我发邮件分享你的知识。