Node.js格式化的控制台输出
有没有一个简单的内置的方式来输出格式化数据到Node.js的控制台?
缩进,将字段向左或向右alignment,添加前导零?
在ES2017(ES8)中引入了两个新的(1)内置方法String.Prototype.padStart和String.Prototype.padEnd ,它们执行所需的填充函数。
(1) 节点> = 8.2.1(或> = 7.5.0,如果使用–harmony标志运行)
来自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 。 第三个参数提供了所需的缩进。
JSON.stringify({ a:1, b:2, c:3 }, null, 4); // { // "a": 1, // "b": 2, // "c": 3 // }
NodeJS没有任何内容可以做到这一点。 你会来的“最接近的”是util.format
,但是不幸的是( 引用 )并没有太大的帮助。
您需要查看其他模块以提供更丰富的格式化体验。 例如: sprintf 。
Sprintf-js允许位置(0,1,2)参数和命名参数。
填充和alignment的一些例子:
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
如果你有更简单的需求,你可以看看util.format 。 它可以从各种参数生成string。 如果你想printf格式化,你可以使用sprintf包或sprintf-js包。
你也可能喜欢string套件和terminal套件。
https://www.npmjs.com/package/string-kit
https://www.npmjs.com/package/terminal-kit
https://blog.soulserv.net/terminal-friendly-application-with-node-js-part-ii-moving-and-editing/
看看Log4JS ,这是一个function性的Log4j端口的尝试