使用 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 就是這樣一個庫,除了上色外,它還有其他的樣式設施,比如使文本變粗、斜體或下劃線。
你可以用 npm install chalk
安裝它,然後就可以使用了
const chalk = require('chalk');
console.log(chalk.yellow('hi!'));
使用 chalk.yellow
比記住轉義碼方便得多,而且代碼更易讀。
請查看上面發布的項目鏈接以獲得更多使用示例。
創建進度條
Progress 是一個在控制台中創建進度條的很棒的包。使用 npm install progress
安裝它
此片段創建了一個 10 步進度條,每 100 毫秒完成一步。當進度條完成時,我們清除間隔
const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
bar.tick();
if (bar.complete) {
clearInterval(timer);
}
}, 100);