Есть ли простой встроенный способ вывода форматированных данных в консоль в Node.js?
Отступ, выравнивание поля влево или вправо, добавление начальных нулей?
Есть ли простой встроенный способ вывода форматированных данных в консоль в Node.js?
Отступ, выравнивание поля влево или вправо, добавление начальных нулей?
Два новых (1) встроенных метода String.Prototype.padStart и String.Prototype.padEnd были введены в ES2017 (ES8), которые выполняют требуемые функции заполнения.
(1) node >= 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) аргументы, так и именованные аргументы.
Несколько примеров заполнения и выравнивания:
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. Он может генерировать строку из различных параметров. Если вы хотите форматировать printf, вы можете использовать sprintf или sprintf-js.
Вам также может понравиться набор струнных и набор терминалов.
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, что является попыткой для функционального порта Log4j