使用Node. js输出到命令行

简介: 使用Node. js输出到命令行

1、使用控制台模块的基本输出

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

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

最基本和最常用的方法是console.log(),它将传递给它的字符串打印到控制台。

如果你传递一个对象,它会将其呈现为字符串。

您可以向console.log传递多个变量,例如:

1. const x = 'x';
2. const y = 'y';
3. console.log(x, y);

我们还可以通过传递变量和格式说明符来格式化漂亮的短语。

1. console.log('My %s has %d ears', 'cat', 2);
2. // My cat has 2 ears
  • %s 将变量格式化为字符串
  • %d 将变量格式化为数字
  • %i 仅将变量格式化为整数部分
  • %o 将变量格式化为对象

示例:

console.log('%o', Number);

2、清除控制台

console.clear()清除控制台(行为可能取决于所使用的控制台)

3、计数元素

console.count()是一个方便的方法。

1. 使用以下代码:
2. const x = 1
3. const y = 2
4. const z = 3
5. console.count(
6. 'The value of x is ' + x +
7. ' and has been checked .. how many times?'
8. )
9. console.count(
10. 'The value of x is ' + x +
11. ' and has been checked .. how many times?'
12. )
13. console.count(
14. 'The value of y is ' + y +
15. ' and has been checked .. how many times?'
16. )
17. // 打印结果:
18. // The value of x is 1 and has been checked .. how many times?: 1
19. // The value of x is 1 and has been checked .. how many times?: 2
20. // The value of y is 2 and has been checked .. how many times?: 1

console.count()会计算一个字符串被打印的次数,并在它旁边打印计数:

可以数一下苹果和橘子:

1. const oranges = ['orange', 'orange'];
2. const apples = ['just one apple'];
3. oranges.forEach(fruit => {
4.  console.count(fruit);
5. });
6. apples.forEach(fruit => {
7.  console.count(fruit);
8. });
9. // orange: 1
10. // orange: 2
11. // just one apple: 1

4、复位计数

控制台countReset()方法重置控制台使用的计数器。count()

1. const oranges = ['orange', 'orange'];
2. const apples = ['just one apple'];
3. oranges.forEach(fruit => {
4.  console.count(fruit);
5. });
6. apples.forEach(fruit => {
7.  console.count(fruit);
8. });
9. console.countReset('orange');
10. oranges.forEach(fruit => {
11.   console.count(fruit);
12. });
13. // orange: 1
14. // orange: 2
15. // just one apple: 1
16. // orange: 1
17. // orange: 2

请注意对console.countReset('orange')的调用,重新将orange的计数重置为零。

5、打印堆栈跟踪

在某些情况下,打印函数的调用堆栈跟踪可能很有用,也许可以回答这样一个问题:您是如何到达代码的这一部分的?

你可以使用console.trace():

1. const function2 = () => console.trace();
2. const function1 = () => function2();
3. function1();

这将打印堆栈跟踪。如果我们在Node中尝试这个,会打印如下所示:

1. Trace
2.     at function2 (file:///Users/repl.js:1:33)
3.     at function1 (file:///Users/repl.js:2:25)
4.     at file:///Users/repl.js:3:1
5.     at ModuleJob.run (node:internal/modules/esm/module_job:198:25)
6.     at async Promise.all (index 0)
7.     at async ESMLoader.import (node:internal/modules/esm/loader:385:24)
8.     at async loadESM (node:internal/process/esm_loader:88:5)
9.     at async handleMainPromise (node:internal/modules/run_main:61:12)

6、计算花费的时间

您可以使用time()和timeEnd()轻松计算函数运行所需的时间

1. const doSomething = () => console.log('test');
2. const measureDoingSomething = () => {
3. console.time('doSomething()');
4. // do something, and measure the time it takes
5. doSomething();
6. console.timeEnd('doSomething()');
7. };
8. measureDoingSomething();

打印如下:

1. test
2. doSomething(): 4.396ms

7、stdout和stderr

我们看到了console。日志非常适合在控制台中打印消息。这就是所谓的标准输出,或stdout。

console.error打印到stderr流。

它不会出现在控制台中,但会出现在错误日志中。

8、为输出着色

可以在控制台中为文本的输出着色,方法是使用转义序列,转义序列是标识颜色的一组字符。

转义序列可以参考(

https://gist.github.com/iamnewton/8754917

你可以在Node.js REPL 中尝试一下,它将以黄色打印hi!。

但是,这是低级别的方法。为控制台输出着色的最简单方法是使用库。Chalk 就是这样一个库,除了着色之外,它还有助于其他样式工具,例如使文本加粗、斜体或下划线。

使用npm install chalk@4安装它,然后您可以使用它:

1. const chalk = require('chalk');
2. console.log(chalk.yellow('hi!'));

使用chalk.yellow比试图记住转义码要方便得多,而且代码的可读性也更好。

9、创建进度条

Progress 是一个很棒的包,可以在控制台中创建进度条。使用npm install progress安装

此代码片段创建了一个10步进度条,每500ms完成一步。当条形图完成时,我们清除间隔:

1. const ProgressBar = require('progress');
2. const bar = new ProgressBar(':bar', { total: 10 });
3. const timer = setInterval(() => {
4.   bar.tick();
5. if (bar.complete) {
6. clearInterval(timer);
7.   }
8. }, 500);

相关文章
|
2月前
|
Web App开发 JavaScript 前端开发
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念
Node.js 是一种基于 Chrome V8 引擎的后端开发技术,以其高效、灵活著称。本文将介绍 Node.js 的基础概念,包括事件驱动、单线程模型和模块系统;探讨其安装配置、核心模块使用、实战应用如搭建 Web 服务器、文件操作及实时通信;分析项目结构与开发流程,讨论其优势与挑战,并通过案例展示 Node.js 在实际项目中的应用,旨在帮助开发者更好地掌握这一强大工具。
51 1
|
28天前
|
存储 JavaScript NoSQL
Node.js新作《循序渐进Node.js企业级开发实践》简介
《循序渐进Node.js企业级开发实践》由清华大学出版社出版,基于Node.js 22.3.0编写,包含26个实战案例和43个上机练习,旨在帮助读者从基础到进阶全面掌握Node.js技术,适用于初学者、进阶开发者及全栈工程师。
52 9
|
2月前
|
JavaScript 前端开发 中间件
JS服务端技术—Node.js知识点
本文介绍了Node.js中的几个重要模块,包括NPM、Buffer、fs模块、path模块、express模块、http模块以及mysql模块。每部分不仅提供了基础概念,还推荐了相关博文供深入学习。特别强调了express模块的使用,包括响应相关函数、中间件、Router和请求体数据解析等内容。文章还讨论了静态资源无法访问的问题及其解决方案,并总结了一些通用设置。适合Node.js初学者参考学习。
50 1
|
2月前
|
开发框架 JavaScript 前端开发
Node.js日记:客户端和服务端介绍、Node.js介绍
Node.js日记:客户端和服务端介绍、Node.js介绍
|
2月前
|
JavaScript 前端开发 开发工具
Node.js——初识Node.js
Node.js——初识Node.js
44 4
|
2月前
|
JavaScript 前端开发 持续交付
构建现代Web应用:Vue.js与Node.js的完美结合
【10月更文挑战第22天】随着互联网技术的快速发展,Web应用已经成为了人们日常生活和工作的重要组成部分。前端技术和后端技术的不断创新,为Web应用的构建提供了更多可能。在本篇文章中,我们将探讨Vue.js和Node.js这两大热门技术如何完美结合,构建现代Web应用。
45 4
|
2月前
|
JSON JavaScript 前端开发
使用JavaScript和Node.js构建简单的RESTful API
使用JavaScript和Node.js构建简单的RESTful API
|
3月前
|
人工智能 JavaScript 前端开发
使用Node.js模拟执行JavaScript
使用Node.js模拟执行JavaScript
34 2
|
3月前
|
消息中间件 JavaScript 前端开发
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
用于全栈数据流的 JavaScript、Node.js 和 Apache Kafka
53 1