专业的编程技术博客社区

网站首页 > 博客文章 正文

Node.js控制台输出(node.js操作)

baijin 2024-08-21 11:18:32 博客文章 9 ℃ 0 评论

当我们在Chrome浏览器的控制台输出concole.log()时候,控制台会将相应的对象漂亮地展示出来,如果你点击箭头,还会展示多层级的对象,如下图:

那么在Node.js中会怎么样呢?

Node.js中的console模块

Node.js 提供了console模块,该模块提供了大量非常有用的与命令行交互的方法。

它基本上与浏览器中的 console 对象相同。

最基础、最常用的方法是 console.log(),该方法会打印传入到控制台的字符串。

const x = 1;
const y = "1234";

console.log(x, y);

同样的,也可以通过传入变量和格式说明符来格式化用语。

  • %s 会格式化变量为字符串
  • %d 会格式化变量为数字
  • %i 会格式化变量为其整数部分
  • %o 会格式化变量为对象
console.log("今年是%d年!", 2021);


stdout 和 stderr

stdout是标准输出流。console.log() 方法就是在控制台中打印消息,将信息打印到stdout流。

console.error() 方法会将信息打印到stderr流,它不会出现在控制台,但会出现在错误日志中。

清空控制台

console.clear() 方法会清除控制台。

元素计数

console.count()方法会对打印的字符串的次数进行计数,并在其旁边打印计数:

const x = 2021;

console.count(x);
console.count(x);
console.count(x);

打印堆栈信息

在开发过程中,我们有时候会通过打印堆栈信息来查看程序运行到哪一步?是怎样运行到这一步的?这里就需要console.trace()方法了。

console.trace()方法会打印堆栈信息。

const foo = () => console.trace()
const doo = () => foo()
doo();

进度条

控制台输出,有时候需要用到进度条,比如下载、解压缩文件等等。

console模块不支持进度条功能,但是progress包可以完美的支持。

安装progress包:

npm install progress -save-dev

进度条代码逻辑:

var ProgressBar = require('progress');
var https = require('https');
 
var req = https.request({
  host: 'download.github.com',
  port: 443,
  path: '/visionmedia-node-jscoverage-0d4608a.zip'
});
 
req.on('response', function(res){
  var len = parseInt(res.headers['content-length'], 10);
 
  console.log();
  var bar = new ProgressBar('  downloading [:bar] :rate/bps :percent :etas', {
    complete: '=',
    incomplete: ' ',
    width: 20,
    total: len
  });
 
  res.on('data', function (chunk) {
    bar.tick(chunk.length);
  });
 
  res.on('end', function () {
    console.log('\n');
  });
});
 
req.end();

执行结果如下图:

Node.js控制台输出对象

说回开始时候的打印对象问题。

首先,我们用开始时候同样的代码,放在node.js执行,结果如下:

如上图,内嵌对象只打印出来2层,之后的就是用 [Object] 代替了!如果我们想打印完整对象怎么办呢?

继续,使用格式化方式打印。

console.log("%o", a);

结果如下:

这次好像好点了,多了几层,打印到了4层,一般的嵌套对象应该够了。那如果要完全打印出来呢?

这里用JSON模块,我们将对象转换成json串打印出来。

console.log(JSON.stringify(a));

结果如下:

呃,完整到是完整了,但看起来不好看。

格式化下看看。

// 其中 2 是用于缩进的空格数
console.log(JSON.stringify(a, null, 2));

结果如图:

完整的对象出来了,感觉没有Chrome浏览器可以折叠得好看好用,但比着打印不全好太多了!

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表