コマンド
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(' ')を使うと、それらの単語を1つの文字列に戻せます。ifとelse ifを連ねて、何をするかを選びます。最後のelseは、入力ミスも含め、想定していなかった単語をすべて処理します。
チャレンジ
簡単このツールはいくつかの処理を行い、node notes.jsの後に続く最初の単語で、どの処理を行うかが決まります。これで、addとlistの2つのコマンドと、知らない単語に対する応答を扱えるようになります。
notes.jsで、最初の2行を置き換えます。node notes.jsの後の単語を分割し、最初の単語をコマンドに、それ以外のすべての単語を残りの部分にします。- コマンドに応じた処理を、1つの
if、else if、elseの連鎖で決めます。各コマンドは、正確に1行だけ出力します。addはAdding:に続けて、残りの単語をスペースで結合して出力します。node notes.js add Buy milkはAdding: Buy milkを出力します。listはNo notes yetを出力します。メモはまだどこにも保存されません。それは第3章で扱います。- それ以外の最初の単語の場合は、
Unknown command:に続けて、その最初の単語だけを出力します。node notes.js remove 3は、3を含めずにUnknown command: removeを出力します。
- ほかには何も出力されてはいけません。前のレッスンで
Adding:を出力する行が連鎖の外に残っていると、すべてのコマンドで実行され、listは2行出力するため、チェックに失敗します。
3つのケースはすべて、終了コード0で正常に終了します。次のレッスンでは、未知のコマンドをエラーにします。
試してみましょう:$ node notes.jsの後の入力欄に、次の各コマンドを入力してEnterキーを押してください。
add Buy milkはAdding: Buy milkを表示します。listはNo notes yetを表示します。remove 3はUnknown command: removeを表示します。- 大文字のLを使った
Listは、Unknown command: Listを表示します。JavaScriptは大文字も含めて、テキストを1文字ずつ比較するため、Listはlistとは異なります。
自分で試してみよう
// あなたのメモツールはここから始まります。
const args = process.argv.slice(2);
console.log(`Adding: ${args.slice(1).join(' ')}`);
Node.jsの基礎のすべてのレッスン
自分で練習してみよう: Expressプレイグラウンド