¿Diferencia entre "process.stdout.write" y "console.log" en node.js?

Resuelto ajsie asked hace 13 años • 12 respuestas

¿Cuál es la diferencia entre "process.stdout.write" y "console.log" en node.js?

EDITAR: El uso de console.log para una variable mostró muchos caracteres ilegibles, mientras que el uso de process.stdout.write mostró un objeto.

¿Porqué es eso?

ajsie avatar Feb 12 '11 12:02 ajsie
Aceptado

console.log()llamadas process.stdout.writecon salida formateada. Consulte format()en console.js la implementación.

Actualmente (v0.10.ish):

Console.prototype.log = function() {
  this._stdout.write(util.format.apply(this, arguments) + '\n');
};
TK-421 avatar Feb 13 '2011 13:02 TK-421

Al mirar los documentos de Node, aparentemente console.log es solo process.stdout.write con un salto de línea al final:

console.log = function (d) {
  process.stdout.write(d + '\n');
};

Fuente: http://nodejs.org/docs/v0.3.1/api/process.html#process.stdout

Mauvis Ledford avatar Apr 26 '2011 20:04 Mauvis Ledford

Sé que esta es una pregunta muy antigua, pero no vi a nadie hablando sobre la diferencia principal entre process.stdout.writey console.logy solo quiero mencionarla.

Como señalaron Mauvis Leford y TK-421console.log , agrega un line-breakcarácter al final de la línea ( \n), pero eso no es todo lo que hace.

El código no ha cambiado desde al menos 0.10.Xla versión y ahora tenemos una 5.Xversión.

Aquí está el código:

Console.prototype.log = function() {
  this._stdout.write(util.format.apply(this, arguments) + '\n');
};

Como puedes ver, hay una parte que dice .apply(this, arguments)y eso marca una gran diferencia en cuanto a funcionalidad. Es más fácil explicar eso con ejemplos:

process.stdout.writetiene una funcionalidad muy básica, puedes escribir algo allí, como esto:

process.stdout.write("Hello World\n"); 

Si no colocas la línea de salto al final, obtendrás un carácter extraño después de la cadena, algo como esto:

process.stdout.write("Hello World"); //Hello World% 

(Creo que eso significa algo así como "el final del programa", por lo que lo verás solo si lo usaste process.stdout.writeal final de tu archivo y no agregaste la línea de salto)

Por otro lado, console.logpodemos hacer más.

  1. Puedes usarlo de la misma manera.

    console.log("Hello World"); //You don't need the break line here because it was already formatedy también ese personaje raro desapareció

  2. Puedes escribir más de una cadena.

    console.log("Hello", "World");

  3. Puedes hacer asociaciones

    console.log("Hello %s", "World") //Useful when "World" is inside a variable

Y eso es todo, esa funcionalidad adicional se brinda gracias a la util.format.applypieza (podría hablar mucho sobre qué hace exactamente esto, pero entiendes mi punto, puedes leer más aquí ).

Espero que alguien encuentre útil esta información.

Gepser Hoil avatar Nov 04 '2015 23:11 Gepser Hoil