Node.jsを使用してコマンドラインに出力する
consoleモジュールを使用した基本的な出力
Node.jsは、コマンドラインと対話するための非常に便利な方法を多数提供するconsole
モジュールを提供します。
これは基本的に、ブラウザにあるconsole
オブジェクトと同じです。
最も基本的で最もよく使用されるメソッドは、渡された文字列をコンソールに出力するconsole.log()
です。
オブジェクトを渡すと、文字列としてレンダリングされます。
console.log
には複数の変数を渡すことができます。例えば、
const x = 'x';
const y = 'y';
console.log(x, y);
とすると、Node.jsは両方を印刷します。
変数とフォーマット指定子を渡すことで、きれいなフレーズをフォーマットすることもできます。
例えば
console.log('My %s has %d ears', 'cat', 2);
%s
は変数を文字列としてフォーマットします%d
は変数を数値としてフォーマットします%i
は変数を整数部分のみにフォーマットします%o
は変数をオブジェクトとしてフォーマットします
例
console.log('%o', Number);
コンソールのクリア
console.clear()
はコンソールをクリアします(動作は使用されるコンソールに依存する場合があります)
要素のカウント
console.count()
は便利なメソッドです。
このコードを見てください
const x = 1;
const y = 2;
const z = 3;
console.count(
'The value of x is ' + x + ' and has been checked .. how many times?'
);
console.count(
'The value of x is ' + x + ' and has been checked .. how many times?'
);
console.count(
'The value of y is ' + y + ' and has been checked .. how many times?'
);
console.count()
は、文字列が出力された回数をカウントし、その横にカウントを出力します
りんごとりんごを数えることができます
const oranges = ['orange', 'orange'];
const apples = ['just one apple'];
oranges.forEach(fruit => {
console.count(fruit);
});
apples.forEach(fruit => {
console.count(fruit);
});
カウントのリセット
console.countReset()メソッドは、console.count()で使用されるカウンタをリセットします。
これを説明するために、りんごとりんごの例を使用します。
const oranges = ['orange', 'orange'];
const apples = ['just one apple'];
oranges.forEach(fruit => {
console.count(fruit);
});
apples.forEach(fruit => {
console.count(fruit);
});
console.countReset('orange');
oranges.forEach(fruit => {
console.count(fruit);
});
console.countReset('orange')
の呼び出しが値カウンタをゼロにリセットする方法に注目してください。
スタックトレースの出力
関数の呼び出しスタックトレースを出力すると便利な場合があります。たとえば、「どのようにしてコードのその部分に到達しましたか?」という質問に答えるためです。
console.trace()
を使用してこれを行うことができます
const function2 = () => console.trace();
const function1 = () => function2();
function1();
これにより、スタックトレースが出力されます。これは、Node.js REPLでこれを試すと出力されるものです
Trace
at function2 (repl:1:33)
at function1 (repl:1:25)
at repl:1:1
at ContextifyScript.Script.runInThisContext (vm.js:44:33)
at REPLServer.defaultEval (repl.js:239:29)
at bound (domain.js:301:14)
at REPLServer.runBound [as eval] (domain.js:314:12)
at REPLServer.onLine (repl.js:440:10)
at emitOne (events.js:120:20)
at REPLServer.emit (events.js:210:7)
経過時間の計算
time()
とtimeEnd()
を使用して、関数が実行に要する時間を簡単に計算できます
const doSomething = () => console.log('test');
const measureDoingSomething = () => {
console.time('doSomething()');
// do something, and measure the time it takes
doSomething();
console.timeEnd('doSomething()');
};
measureDoingSomething();
stdoutとstderr
見てきたように、console.logはコンソールにメッセージを出力するのに最適です。これは、標準出力、つまりstdout
と呼ばれます。
console.error
はstderr
ストリームに出力します。
コンソールには表示されませんが、エラーログに表示されます。
出力の色付け
エスケープシーケンスを使用して、コンソールでのテキストの出力を色付けできます。エスケープシーケンスは、色を識別する一連の文字です。
例
console.log('\x1b[33m%s\x1b[0m', 'hi!');
Node.js REPLで試してみると、hi!
が黄色で出力されます。
ただし、これはこれを行うための低レベルな方法です。コンソール出力を色付けする最も簡単な方法は、ライブラリを使用することです。Chalkはそのようなライブラリの1つであり、色付けに加えて、テキストを太字、斜体、または下線にするなどの他のスタイル設定機能も支援します。
npm install chalk
でインストールすると、使用できます
const chalk = require('chalk');
console.log(chalk.yellow('hi!'));
chalk.yellow
を使用する方が、エスケープコードを覚えるよりもはるかに便利であり、コードははるかに読みやすくなります。
上記のプロジェクトリンクで、その他の使用例を確認してください。
プログレスバーの作成
Progressは、コンソールにプログレスバーを作成するための素晴らしいパッケージです。npm install progress
を使用してインストールします
このスニペットは、10ステップのプログレスバーを作成し、100ミリ秒ごとに1ステップが完了します。バーが完了すると、間隔をクリアします
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
bar.tick();
if (bar.complete) {
clearInterval(timer);
}
}, 100);