В чем разница между "process.stdout.write" и "console.log" в node.js?
РЕДАКТИРОВАТЬ: Использование console.log для переменной показало много нечитаемых символов при использовании process.stdout.write показало объект.
Это почему?
javascript
node.js
ajsie
источник
источник
Ответы:
console.log()
звонкиprocess.stdout.write
с форматированным выводом. Смотритеformat()
в console.js для реализации.В настоящее время (v0.10.ish):
источник
console.log()
кажется, добавить новуюЕсли посмотреть на документы Node, то console.log - это просто process.stdout.write с переводом строки в конце:
Источник: http://nodejs.org/docs/v0.3.1/api/process.html#process.stdout
источник
Я знаю , что это очень старый вопрос , но я не видел , кто говорил о главном различии между
process.stdout.write
иconsole.log
и я просто хочу упомянуть об этом.Как указали Маувис Лефорд и TK-421 ,
console.log
оператор добавляетline-break
символ в конце строки (\n
), но это еще не все, что он делает.Код не изменился по крайней мере с
0.10.X
версии, и теперь у нас есть5.X
версия.Вот код:
Как видите, есть часть, которая говорит
.apply(this, arguments)
и имеет большое значение для функциональности. Это легче объяснить с помощью примеров:process.stdout.write
имеет очень базовую функциональность, вы можете просто написать что-то там, например:Если вы не поставите строку разрыва в конце, вы получите странный символ после вашей строки, что-то вроде этого:
(Я думаю, что это означает что-то вроде «конец программы», поэтому вы увидите это только в том случае, если вы
process.stdout.write
использовали конец файла и не добавили строку разрыва)С другой стороны,
console.log
можно сделать больше.Вы можете использовать его таким же образом
console.log("Hello World"); //You don't need the break line here because it was already formated
а также этот странный персонаж действительно исчезВы можете написать более одной строки
console.log("Hello", "World");
Вы можете сделать ассоциации
console.log("Hello %s", "World") //Useful when "World" is inside a variable
И это все, что дополнительная функциональность предоставляется благодаря этой
util.format.apply
части (я мог бы много рассказать о том, что именно это делает, но вы поняли мою точку зрения, вы можете прочитать больше здесь ).Я надеюсь, что кто-то найдет эту информацию полезной.
источник
stdout.write
и как избежать%
%
в конце, просто позвонивprocess.stdout.write('\n');
в конце моего цикла (если у вас есть, например)%
просто способ оболочки сказать, что в конце файла нет новой строки.%
в файлеОдно большое отличие, которое не было упомянуто, состоит в том, что process.stdout принимает только строки в качестве аргументов (также могут быть потоками по конвейеру), а console.log принимает любой тип данных Javascript.
например:
источник
Еще одно важное отличие в этом контексте было бы с
process.stdout.clearLine()
иprocess.stdout.cursorTo(0)
.Это было бы полезно, если вы хотите показать процент загрузки или обработки в одной строке. Если вы используете clearLine (), cursorTo () с
console.log()
ним не работает, потому что он также добавляет \ n к тексту. Просто попробуйте этот пример:источник
Я только что заметил что-то во время исследования этого после получения помощи с https.request для метода post. Думаю, я поделюсь с вами информацией, чтобы понять
process.stdout.write
не добавляет новую строку, в то время какconsole.log
делает, как уже упоминали другие. Но есть и то, что легче объяснить на примерах.process.stdout.write(d);
правильно распечатает данные без новой строки. Темconsole.log(d)
не менее, будет напечатана новая строка, но данные не будут отображаться правильно,<Buffer 12 34 56...
например, для этого .Чтобы
console.log(d)
правильно показать информацию, мне нужно это сделать.Итак, в основном:
process.stdout.write
непрерывно печатает информацию как извлекаемые данные и не добавляет новую строку.console.log
печатает информацию о том, что было получено в точке поиска и добавляет новую строку.Это лучший способ объяснить это.
источник
Простая разница в том, что методы console.log () автоматически добавляют символ новой строки. Это означает, что если мы перебираем и печатаем результат, каждый результат печатается в новой строке.
Методы process.stdout.write () не добавляют символ новой строки. полезно для печати шаблонов.
источник
Console.log реализует process.sdout.write, process.sdout.write - это буфер / поток, который будет напрямую выводиться на вашу консоль.
В соответствии с моей puglin serverline :
console = new Console(consoleOptions)
вы можете переписать класс консоли с вашей собственной системой readline .Вы можете увидеть исходный код console.log:
Узнать больше :
источник