使用Node. js输出到命令行

news2024/11/26 23:24:38

目录

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

2、清除控制台

3、计数元素

4、复位计数

5、打印堆栈跟踪

6、计算花费的时间

7、stdout和stderr

8、为输出着色

9、创建进度条


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

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

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

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

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

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

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

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

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

示例:

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

2、清除控制台

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

3、计数元素

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?'
)
// 打印结果:
// The value of x is 1 and has been checked .. how many times?: 1
// The value of x is 1 and has been checked .. how many times?: 2
// The value of y is 2 and has been checked .. how many times?: 1

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

可以数一下苹果和橘子:

const oranges = ['orange', 'orange'];
const apples = ['just one apple'];
oranges.forEach(fruit => {
	console.count(fruit);
});
apples.forEach(fruit => {
	console.count(fruit);
});
// orange: 1
// orange: 2
// just one apple: 1

4、复位计数

控制台countReset()方法重置控制台使用的计数器。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);
});
// orange: 1
// orange: 2
// just one apple: 1
// orange: 1
// orange: 2

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

5、打印堆栈跟踪

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

你可以使用console.trace():

const function2 = () => console.trace();
const function1 = () => function2();
function1();

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

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

6、计算花费的时间

您可以使用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();

打印如下:

test
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安装它,然后您可以使用它:

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

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

9、创建进度条

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

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

const ProgressBar = require('progress');
const bar = new ProgressBar(':bar', { total: 10 });
const timer = setInterval(() => {
  bar.tick();
  if (bar.complete) {
    clearInterval(timer);
  }
}, 500);

 

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/587181.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Qt Quick系列(4)—定位元素

🚀作者:CAccept 🎂专栏:Qt Quick 文章目录 前言相对布局代码示例示例一示例二示例三示例四示例五示例六 简单"布局器"ColumnRowGridFlow 结语 前言 在Qt Quick中,可以使用以下方式来定位元素:…

需要建立强大的网络响应框架

由于头条新闻充斥着网络攻击,因此企业制定网络响应框架变得前所未有的重要。当今的网络安全形势继续快速发展,黑客行动主义、民族国家支持的网络攻击、勒索软件和其他攻击策略变得更加危险、复杂,组织的防御成本也越来越高。随着企业进行数字…

华为OD机试真题B卷 Java 实现【名字的漂亮度】,附详细解题思路

一、题目描述 给出一个字符串,该字符串仅由小写字母组成,定义这个字符串的“漂亮度”是其所有字母“漂亮度”的总和。 每个字母都有一个“漂亮度”,范围在1到26之间。没有任何两个不同字母拥有相同的“漂亮度”。字母忽略大小写。 给出多个…

Ex-ChatGPT本地部署+Azure OpenAI接口配置+docker部署服务

Ex-ChatGPT项目分为 Ex-ChatGPT 和 WebChatGPTEnhance 两部分,Ex-ChatGPT启动后是个web服务,通过访问ip端口体验; WebChatGPTEnhance可编译生成一个浏览器插件,Chrome或者Microsoft edge浏览器可以安装该插件,点击该插…

Golang中文件目录操作的实现

目录 文件 文件目录 文件目录操作 读取文件 一、方法一 (file.Read()) 二、方法二 (bufio读取文件) 三、方法三 (ioutil 读取方法) 写入文件 一、方法一 二、方法二 三、方法三 (ioutil写入文件) 复制文件 一、方法一 二、方法二 文件 Golang中,文件是…

python异常处理速通

一.异常处理认识 1.基础认识 开发人员在编写程序时,难免会遇到错误,有的是编写人员疏忽造成的语法错误,有的是程序内部隐含逻辑问题造成的数据错误,还有的是程序运行时与系统的规则冲突造成的系统错误,等等。总的来说…

什么是肖特基二极管

普通二极管是由N型半导体和P型半导体接触制成,交界面形成PN结。 肖特基二极管是由N型半导体和金属接触制成,交界面形成肖特基结。 肖特基结的形成主要是因为N型半导体中的电子更容易逸出进入到金属,从而在接触面N型半导体失去电子形成正离子区…

python:绘制GAM非线性回归散点图和拟合曲线

作者:CSDN _养乐多_ 本文将介绍使用python语言绘制广义线性模型(Generalized Additive Model,GAM)非线性回归散点图和拟合曲线。并记录了计算RMSE、ubRMSE、R2、Bias的代码。 文章目录 一、GAM非线性回归详解二、代码三、计算RM…

docker 镜像/容器的打包、导出、导入

目录 一、将变动过的容器打包生成新的镜像 二、对镜像进行导出导入 1、将镜像导出为一个镜像img文件 2、将img镜像文件导入,复制出一个完全一样镜像 三、对容器进行导入导出 1、将容器导出为一个镜像tar文件 2、将镜像tar文件导入,生成一个新镜像…

Linux本地搭建GitLab服务器 - 内网穿透远程访问

文章目录 前言1. 下载Gitlab2. 安装Gitlab3. 启动Gitlab4. 安装cpolar内网穿透5. 创建隧道配置访问地址6. 固定GitLab访问地址6.1 保留二级子域名6.2 配置二级子域名 7. 测试访问二级子域名 转载自cpolar极点云文章:Linux搭建GitLab私有仓库,并内网穿透实…

vite构建的项目如何修改element Plus的主题样式

安装element plus 安装icon pnpm install element-plus pnpm install element-plus/icons-vue main.ts配置 icon的使用https://element-plus.gitee.io/zh-CN/component/icon.html#%E7%BB%93%E5%90%88-el-icon-%E4%BD%BF%E7%94%A8 import { createApp } from vue import ./sty…

【工具】vscode的常用插件之git插件

🐚作者简介:花神庙码农(专注于Linux、WLAN、TCP/IP、Python等技术方向)🐳博客主页:花神庙码农 ,地址:https://blog.csdn.net/qxhgd🌐系列专栏:善假于物&#…

计算机视觉cv模型最新进展速看:

华为诺亚实验室等研究者提出动态分辨率网络 DRNet 深度卷积神经网络通畅采用精细的设计,有着大量的可学习参数,在视觉任务上实现很高精 确度要求。为了降低将网络部署在移动端成本较高的问题,近来发掘在预定义架构上的冗余 已经取得了巨大的…

Midjourney AI绘画中文教程详解(完整版)模型、命令、参数与各种高级用法

我有一种预感,您一下子看不完这篇内容,您得【收藏】一下,以便下次接着看~~ Midjourney AI绘画中文教程,Midjourney是一款2022年3月面世的AI绘画工具,创始人是David Holz。 只要输入想到的文字,就能通过人…

数据库sqlserver-----触发器的插入,更新和删除

在学习触发器之前,先弄清DDL,DML,DQL,DCL的区别: http://t.csdn.cn/Le3wA 触发器就是当执行某个事件的时候触发另一个事件的执行,根据事件的触发时间可分为 before和after Before与After区别:before:(insert、update)可以对new…

数据结构学习记录——树习题—Tree Traversals Again(题目描述、输入输出示例、解题思路、解题方法C语言、解析)

目录 题目描述 输入示例 输出示例 解题思路 解题方法(C语言) 解析 题目描述 有序的二叉树遍历可以用堆栈以非递归的方式实现。 例如: 假设遍历一个节点数为6的二叉树(节点数据分别为1到6)时, 堆…

immersive-translate 安装,个人觉得一款超级好用的浏览器翻译插件

immersive-translate 安装,个人觉得一款超级好用的浏览器翻译插件 immersive-translate 是什么Github 地址主要特性立即安装使用 immersive-translate immersive-translate 是什么 Immersive Dual Web Page Translation Extension - 沉浸式双语网页翻译扩展。 Git…

MSP432学习笔记5——外部中断

所用单片机型号:MSP432P401r 今日继续我的MSP432电赛速通之路。 外部中断是个很有用的配置 STM32几乎每个I/O口都能配置复用为外部中断 但MSP432并不是这样。 我经过查阅数据手册发现支持中断的引脚为: P1^0~ P1^7 P3^0~ P3^7 P5^0~ P5^…

【Python习题】Python课程设计的作业分小组完成得分计算(实现代码)

目录 题目思路分析代码实现效果总结 主要内容是校设课程的习题和课外学习的一些习题。 欢迎关注 『Python习题』 系列,持续更新中 欢迎关注 『Python习题』 系列,持续更新中 题目 【题目描述】Python课程设计的作业分小组完成,规定小组成员1…

​Shodan新手入坑指南​

什么是 Shodan? 首先,Shodan 是一个搜索引擎,但它与 Google 这种搜索网址的搜索引擎不同,Shodan 是用来搜索网络空间中在线设备的,你可以通过 Shodan 搜索指定的设备,或者搜索特定类型的设备,其…