俄罗斯贵宾会-俄罗斯贵宾会官网
做最好的网站

以实践的方式学 Node.js: nodeschool 使用指南

在实战中学习 JavaScript 的几个工具

2016/06/07 · JavaScript · 工具

本文由 伯乐在线 - HansDo 翻译,HansDo 校稿。未经许可,禁止转载!
英文出处:developer.telerik.com。欢迎加入翻译组

每当被问到开发者应该如何深入学习某一种语言时,我总会强调的一点是:找到适合自己的学习方法很关键。提到学习编程,多数人会立刻想到下面的方式:

  • 阅读相关书籍
  • 参加会议
  • 参加学习培训

尽管这些学习手段都是行之有效的,但对我来说,它们或多或少都有一些缺点。拿看书学习来说,我发现这种方式只有当我旁边放着一台电脑时才有效果。因为在读到某个知识点时,我必须立即试着编写几行代码并运行看看结果,这样才能完全理解它。

我非常热爱阅读,但我尽量不在电脑边读书,因为我很少能够在有电脑的情况下把注意力始终集中在书上。出于这个原因,尽管我每年读的书都不少,但只有很少的几本是技术类书籍。

参加技术会议来长长见识还可以,可很难让你深入掌握——一般他们只会花 60 分钟来介绍一种语言或某个话题,充其量鼓励你自己在会后多实践一下提到的技术。不过值得一提的是,有些会议会设置一天的「预前会」,预前会上会安排一些比较详尽的演讲和相关环节——这些环节对学习则更有裨益, 尤其是他们有时会提供实验环境,让你同演讲者一起动手实践演讲中涉及的项目代码。

最后,上课培训的方式固然可以让你在短期内取得惊人进步,但前提是你有足够的(下班后的)时间和金钱。记得两年前我参加过一个为时七天的 Big Nerd 的课程。课程本身棒极了——但也耗费了我大把大把的钱和时间。

在上面给出的建议中,我提到了在学习过程中多写一些练习代码,边「玩」边学。我发现这是用来迅速掌握新技术极其有效的途径。

所以在这篇文章里,我会介绍一些不同于上面那些常规途径的工具,来帮你「边做边学」JavaScript。这些工具都需要你编写一些代码来完成各种任务,从而帮你掌握某个具体技术点、或让你的整体技术水平得到训练和提高。我们开始吧!

图片 1

Js-assessment (js-测验)

第一个工具是 Rebecca Murphey 写的 js-assessment , 它的核心其实就是一组测试用例。每条测试用例都代表一个需要你解决的问题。当你通过修改代码让某条测试通过,你也就完成了相应知识点的测验。

来看一 个 arrays 文件里的简单的例子:

JavaScript

indexOf : function(arr, item) { },

1
2
3
indexOf : function(arr, item) {
 
},

如你所见,这里给出了一个空函数和它的参数,你需要实现该函数的内部逻辑来让它按照期望的方式工作,从而让相应的自动化测试用例成功。不过有的时候你需要实现什么样的功能并不容易一眼就看出来,比如同样在 arrays 文件里有这样一个函数:

JavaScript

curtail : function(arr) { },

1
2
3
curtail : function(arr) {
 
},

我研究了一番才搞明白(但这就是学习的过程,对吧?),原来它应该实现的功能是删除数组中的第一个元素。

在编写代码的过程中,你可以随时在浏览器里查看当前所有测试用例的执行结果。下图显示的是我完成其中一部分测验时的状态。

图片 2

关于这个项目我最喜欢的一点是:你可以一次只搞定一个测试用例,从而一点点地完成整个项目,而不用一次性投入太多时间。

介绍

NodeSchool 是一个针对初学者,教授 Web 开发技能的免费开源教程(NodeSchool 包含一堆教程,不仅仅是 Node.js 的)。

NodeSchool 的教程由一系列任务构成,每个任务除了常规的描述,还有详细的提示。如下图所示:

图片 3

NodeSchool

NodeSchool  并不只是 Node.js,事实上它包括了关于JavaScript 的各种教程。课程覆盖了从 JavaScript 基础到 Node(既然叫NodeSchool当然要有Node。) 甚至 WebGL 的内容。你可以先安装最感兴趣的教程, 可如果还不熟悉 JavaScript 的话,我推荐从 javascripting 课程开始。

Shell

npm install -g javascripting

1
npm install -g javascripting

然后只需要在命令行里输入 javascripting

图片 4

这个赏心悦目的古典风格菜单会提示你选择一个子课程,然后具体的指导和练习信息就会显示出来。

图片 5

注意上面最后两行内容,这个命令行程序 javascripting 还能够验证你写的程序是否符合要求。你只要写好解题代码,然后到命令行里去完成验证就可以完成相应的子课程了。

下面是验证被我故意写错的代码时的输出:

图片 6

你可以看到这里的帮助信息相当详尽—— 其实还有更多的信息没有展示出来,因为屏幕上实在显示不下了。当然,javascripting 毕竟是给没接触过 JS 的人准备的课程。虽然我不认为其他的教程也会提供这么多帮助,但我目前还没被什么问题难倒过。这里的问题一般一分钟内就可以解决——最多也就30分钟。这个程序还会随着你的进度贴心地标记出你完成的练习,以及还有哪些挑战等着你。

图片 7

前面我说到,你可以在 NodeSchool 找到各种类型的教程。他们还有一个关于 ES6 的课程,所以如果你想获得一些关于这项热门技术的上手经验,NodeSchool 会是一个能帮你迅速掌握它的绝佳选择。

Node.js 教程的安装

第 1 步 安装: Node.js
Windows 有 .exe 的安装包,Mac 用 Homebrew 安装。在命令行中执行 node -v, 显示 Node.js 的版本号表示安装成功。

第 2 步: 安装 NodeSchool
在命令中执行如下命令:

npm install -g learnyounode

在命令行中执行 learnyounode, 若出现如下图所示的学习目录,则表示安装成功。

图片 8

看到都是英文?别怕,可以将语言切换成中文。方法:执行learnyounode,按键盘上的下移键,将光标移动到CHOOSE LANGUAGE 按回车,选择简体中文 按回车即可。切换后如下图所示:

图片 9

Advent of Code(代码降临,又名邪恶之塔)

接下来这个是我最爱——呃或者是最讨厌的一个项目——好吧,我就是这样一个反复无常的人。 在去年的圣诞季,作者发布 Advent of Code 的时候,他声称这是一种可以用来「轻松愉快地」打发圣诞节假期的方式。这里面的每个编程挑战都跟圣诞节主题相关,而且每个都包含两个问题。不过一般情况下,只需要在第一道题的答案上做很小改动就能得到第二道的答案。

图片 10

这些题目并不限定使用的编程语言,所以你可以用它来学习任何语言,而不仅是 JavaScript。刚开始的第一道题很容易:

图片 11

要完成这一题,只要读取给定的那个很长的输入字符串、解析它的内容并进行简单统计就可以了。下面是我的解题代码——是的,我知道这并不是最好的解法,不过对我来说够用了。

JavaScript

var input = '()(((( LOTS OF TEXT REMOVED ()('; var floor = 0; for(var i=0;i<input.length;i++) { var char = input.charAt(i); if(char === '(') floor++; if(char === ')') floor--; } console.log("Done - "+floor);

1
2
3
4
5
6
7
8
9
10
11
var input = '()((((  LOTS OF TEXT REMOVED ()(';
 
var floor = 0;
 
for(var i=0;i<input.length;i++) {
    var char = input.charAt(i);
    if(char === '(') floor++;
    if(char === ')') floor--;
}
 
console.log("Done - "+floor);

这一题的第二部分也很简单 ——我只花了大约一分钟时间改了一下代码,就能让代码在循环中保存符合条件的那个值了。

看上去有点儿意思对吧?可是这些题目的难度很快就会上升到让人灰心丧气的水平(至少对我而言)。比如第24题:给你一组包裹和他们的重量信息,你需要把这些包裹分为三组,并保证每个组里包裹的重量之和相等。噢对了,要保证第一组的包裹数量是最小的,这样圣诞老人才有地方坐…噢还有!第一组还要保证最小的“量子纠缠态”—— 这个值是将所有包裹的重量相乘求积得来的。

在做这一题的时候,我作弊了… 事实上我大概一共没羞没臊地作弊了四题。这些题目都有对应的 Reddit 博客链接,你可以在上面学习别人的解法。对于那几道难住我的题,我在那里找到了其他语言实现的解法,并利用他们的解题思路转换成 JavaScript 完成了挑战。

开始学习

在命令行中执行 learnyounode 。选择想学的课程,按回车键,开始学习。

如果读了任务的描述和提示,你还是不知道无从下手,可以到讨论区提问

本文由俄罗斯贵宾会发布于Web前端,转载请注明出处:以实践的方式学 Node.js: nodeschool 使用指南

您可能还会对下面的文章感兴趣: