Menu
CoddyTech

命令

本课属于 Coddy Node.js 学习旅程的“Node.js 基础”单元。第 4 课,共 33 课。

这个工具会执行几项操作,第一个单词会说明要执行哪一项。

解构会取出第一个单词,并将其余内容收集到一个数组中:

// node calc.js double 4
const [action, ...rest] = process.argv.slice(2);
if (action === 'double') {
    console.log(Number(rest[0]) * 2);
}

action 是第一个单词,rest 保存它后面的所有单词。rest.join(' ') 会将这些单词重新组合成一个字符串。通过一连串的 if 和 else if 来选择要执行的操作。最后的 else 会处理所有你没有预料到的单词,包括拼写错误。

challenge icon

挑战

简单

你的工具会执行几种任务,node notes.js 后面的第一个词表示要执行哪种任务。现在,它会识别两个命令:add 和 list,还会对它不认识的词作出回应。

  1. 在 notes.js 中,替换最开始的两行。把 node notes.js 后面的词拆分为命令(第一个词)和其余部分(其他所有词)。
  2. 根据命令,用一个 if、else if、else 链来决定要做什么。每个命令只输出一行:
    • add 会输出 Adding: ,后面接用空格连接的其余词。node notes.js add Buy milk 会输出 Adding: Buy milk。
    • list 会输出 No notes yet。目前笔记还没有保存到任何地方,这部分会在第 3 章介绍。
    • 如果第一个词是其他内容,就输出 Unknown command: ,后面只接这个第一个词。node notes.js remove 3 会输出 Unknown command: remove,不包含 3。
  3. 不能输出其他内容。如果上一课中输出 Adding: 的那一行留在条件链外,它就会对每个命令运行,导致 list 输出两行,并且检查无法通过。

这三种情况都会正常结束,退出代码为 0。下一课会把未知命令变成错误。

试试看:在 $ node notes.js 后面的输入框中输入以下各项,然后按 Enter。

  • add Buy milk 会显示 Adding: Buy milk。
  • list 会显示 No notes yet。
  • remove 3 会显示 Unknown command: remove。
  • 首字母大写的 List 会显示 Unknown command: List。JavaScript 会逐个字母比较文本,包括大写字母,因此 List 不等于 list。

亲手试试

// 你的笔记工具从这里开始。
const args = process.argv.slice(2);
console.log(`Adding: ${args.slice(1).join(' ')}`);

Node.js 基础中的所有课

自己练习: Express 在线编辑器