命令
本课属于 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 会处理所有你没有预料到的单词,包括拼写错误。
挑战
简单你的工具会执行几种任务,node notes.js 后面的第一个词表示要执行哪种任务。现在,它会识别两个命令:add 和 list,还会对它不认识的词作出回应。
- 在
notes.js中,替换最开始的两行。把node notes.js后面的词拆分为命令(第一个词)和其余部分(其他所有词)。 - 根据命令,用一个
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。
- 不能输出其他内容。如果上一课中输出
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 在线编辑器