使用控制台模块的基本输出
Node提供了一个console 模块,它提供了大量非常有用的方法来与命令行互动。
它基本上与你在浏览器中找到的console 对象相同。
最基本和最常用的方法是console.log() ,它将你传递给它的字符串打印到控制台。
如果你传递一个对象,它将把它渲染成一个字符串。
你可以向console.log ,例如,传递多个变量。
const x = 'x'
const y = 'y'
console.log(x, y)
而Node将打印这两个变量。
我们还可以通过传递变量和格式指定器来格式化漂亮的短语。
例如:。
console.log('My %s has %d years', 'cat', 2)
%s格式化一个变量为一个字符串%d或 格式化一个变量为一个整数%i%f格式化变量为浮点数%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?'
)
发生的情况是,count会计算一个字符串被打印的次数,并在它旁边打印出计数。
你可以直接数苹果和橘子。
const oranges = ['orange', 'orange']
const apples = ['just one apple']
oranges.forEach(fruit => {
console.count(fruit)
})
apples.forEach(fruit => {
console.count(fruit)
})
打印堆栈跟踪
可能在有些情况下,打印一个函数的调用堆栈跟踪是很有用的,也许可以回答你是如何到达代码的那一部分的问题*?*
你可以使用console.trace() 。
const function2 = () => console.trace()
const function1 = () => function2()
function1()
这将打印出堆栈跟踪。这就是我在Node 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对于在Console中打印信息是很好的。这就是所谓的标准输出,或stdout 。
console.error 打印到 流。stderr
它不会出现在控制台中,但它会出现在错误日志中。
给输出着色
你可以通过使用转义序列给控制台中的文本输出着色。转义序列是一组标识颜色的字符。
例如。
console.log('\x1b[33m%s\x1b[0m', 'hi!')
你可以在Node REPL中试试,它将用黄色打印hi! 。
然而,这只是低级的方法。为控制台输出着色的最简单方法是使用一个库。Chalk就是这样一个库,除了着色之外,它还可以帮助其他的样式设计,比如将文本加粗、斜体或下划线。
你把它和npm install chalk 一起安装,然后你就可以使用它了。
const chalk = require('chalk')
console.log(chalk.yellow('hi!'))
使用chalk.yellow ,比努力记住转义代码要方便得多,而且代码的可读性也更强。
查看我在上面发布的项目链接,了解更多的使用实例。
创建一个进度条
Progress是一个很棒的软件包,可以在控制台中创建一个进度条。安装它的方法是npm install progress
这个片段创建了一个10步的进度条,每100ms完成一步。当进度条完成后,我们会清除该间隔。
const ProgressBar = require('progress')
const bar = new ProgressBar(':bar', { total: 10 })
const timer = setInterval(() => {
bar.tick()
if (bar.complete) {
clearInterval(timer)
}
}, 100)