Node.js格式的控制台输出

Node.js格式的控制台输出,node.js,console,Node.js,Console,在Node.js中是否有一种简单的内置方式将格式化数据输出到控制台 缩进、将字段向左或向右对齐、添加前导零?节点中没有任何内置功能可以完成此操作。“最接近”的是util.format,不幸的是,它仍然没有做很多工作() 您需要研究其他模块,以提供更丰富的格式化体验。例如: Sprintf js同时允许位置(0、1、2)参数和命名参数 填充和对齐的几个示例: var sprintf=require("sprintf-js").sprintf; console.log(sprintf("Space

在Node.js中是否有一种简单的内置方式将格式化数据输出到控制台


缩进、将字段向左或向右对齐、添加前导零?

节点中没有任何内置功能可以完成此操作。“最接近”的是
util.format
,不幸的是,它仍然没有做很多工作()

您需要研究其他模块,以提供更丰富的格式化体验。例如:

Sprintf js同时允许位置(0、1、2)参数和命名参数

填充和对齐的几个示例:

var sprintf=require("sprintf-js").sprintf;

console.log(sprintf("Space Padded => %10.2f", 123.4567));
console.log(sprintf("    _ Padded => %'_10.2f", 123.4567));
console.log(sprintf("    0 Padded => %010.2f", 123.4567));
console.log(sprintf(" Left align => %-10.2f", 123.4567));
结果:

Space Padded =>     123.46
    _ Padded => ____123.46
    0 Padded => 0000123.46
 Left align => 123.46    

如果你有更简单的需求,你可以考虑。它可以从各种参数生成字符串。如果您想使用类似printf的格式,您可以使用package或package。

看一看,这是对Log4j功能端口的一次尝试。

您可能还喜欢string kit和terminal kit

ES2017(ES8)中引入了两种新的(1)内置方法,它们执行所需的填充功能

(1) 节点>=8.2.1(如果使用--harmony标志运行,则>=7.5.0)

mdn页面中的示例:

'abc'.padStart(10);         // "       abc"
'abc'.padStart(10, "foo");  // "foofoofabc"
'abc'.padStart(6,"123465"); // "123abc"
'abc'.padStart(8, "0");     // "00000abc"
'abc'.padStart(1);          // "abc" 

'abc'.padEnd(10);          // "abc       "
'abc'.padEnd(10, "foo");   // "abcfoofoof"
'abc'.padEnd(6, "123456"); // "abc123"
'abc'.padEnd(1);           // "abc"
要将json缩进控制台,请尝试使用。第三个参数提供所需的缩进

JSON.stringify({ a:1, b:2, c:3 }, null, 4);
// {
//    "a": 1,
//    "b": 2,
//    "c": 3
// }

如果数据是表格式的,那么最简单的方法就是使用
console.table

这是代码

console.table(
  COMMANDS.map(command => {
    return {
      "Long Option": command.long_option,
      "Short Option": command.short_option,
      Description: command.description
    };
  })
);
您不需要外部库。 下面是示例输出。您只需要传递一个数组对象。

不仅在Nodejs中,它也可以在chrome中使用


如果我将util.format和“.padStart/”.padEnd组合在一起,如上面的文章所述,那么我就得到了我所期待的:

> console.log(util.format("%s%s","Name:".padEnd(10), "John Wall"))
Name:     John Wall

我不知道其中的任何一个,但类似的一个是
colors
,它可以格式化输出的字符串,例如
“绿色”。绿色
我假设您要求执行类似
控制台的操作。安装({color:'Green',prepend:'0000')
,但已经内置了吗?您可以创建自己的日志方法或重写
stdout.write
方法(尽管人们建议不要重写本机函数)。我正在考虑在输出字符串中使用各种方便的格式修饰符的
printf()
。下面的答案很好。此外,如果您还想将自动颜色添加到标准Node.js输出中,请查看。看起来就像我的答案一样?:)是的,只是晚了几分钟。
util.format
总比什么都没有好。但是,并没有好多少如果它只是console.log的一部分。。。那就更有意义了。我添加了几个示例来完善答案。我如何传递字符串?@chovy文档中有很多示例,我建议您从这里开始。嘿!欢迎来到堆栈溢出!尽管链接可能包含问题的答案,但请确保提供答案的基本信息,这样,如果该链接被删除,答案仍然有效。谢谢可能值得注意的是,这仅在节点>=8.2.1(如果使用
--harmony
标志运行,则为>=7.5.0)中受支持,因为它是最近才出现的。即使没有该标志,这对我来说在v8.1.2上也是有效的。如果看不到这一工作,请不要忘记使用.toString()。有没有办法将列的内容左缩进?它默认为居中对齐。有没有办法将文本向左对齐?