Apa perbedaan antara "process.stdout.write" dan "console.log" di node.js?
EDIT: Menggunakan console.log untuk variabel menunjukkan banyak karakter yang tidak dapat dibaca saat menggunakan process.stdout.write menunjukkan sebuah objek.
Mengapa demikian?
javascript
node.js
ajsie
sumber
sumber
Jawaban:
console.log()
panggilanprocess.stdout.write
dengan output yang diformat. Lihatformat()
di console.js untuk implementasinya.Saat ini (v0.10.ish):
sumber
console.log()
tampaknya menambahkan baris baruMelihat Node docs tampaknya console.log hanyalah proses.stdout.write dengan garis-putus di akhir:
Sumber: http://nodejs.org/docs/v0.3.1/api/process.html#process.stdout
sumber
Saya tahu ini adalah pertanyaan yang sangat lama tetapi saya tidak melihat ada yang berbicara tentang perbedaan utama antara
process.stdout.write
danconsole.log
dan saya hanya ingin menyebutkannya.Seperti Mauvis Leford dan TK-421 tunjukkan,
console.log
menambahkanline-break
karakter di akhir baris (\n
) tapi itu tidak semua yang dilakukannya.Kode tidak berubah sejak
0.10.X
versi setidaknya dan sekarang kami memiliki5.X
versi.Ini kodenya:
Seperti yang Anda lihat, ada bagian yang mengatakan
.apply(this, arguments)
dan itu membuat perbedaan besar pada fungsionalitas. Lebih mudah dijelaskan dengan contoh:process.stdout.write
memiliki fungsi yang sangat mendasar, Anda bisa menulis sesuatu di sana, seperti ini:Jika Anda tidak meletakkan garis putus-putus di akhir, Anda akan mendapatkan karakter aneh setelah string Anda, sesuatu seperti ini:
(Saya pikir itu berarti sesuatu seperti "akhir dari program", jadi Anda akan melihatnya hanya jika Anda
process.stdout.write
digunakan di akhir file Anda dan Anda tidak menambahkan garis putus-putus)Di sisi lain,
console.log
bisa berbuat lebih banyak.Anda bisa menggunakannya dengan cara yang sama
console.log("Hello World"); //You don't need the break line here because it was already formated
dan juga karakter aneh itu menghilangAnda dapat menulis lebih dari satu string
console.log("Hello", "World");
Anda dapat membuat asosiasi
console.log("Hello %s", "World") //Useful when "World" is inside a variable
Yang itu saja, bahwa fungsionalitas tambahan diberikan berkat
util.format.apply
bagian itu (saya bisa berbicara banyak tentang apa sebenarnya ini tetapi Anda mengerti maksud saya, Anda dapat membaca lebih lanjut di sini ).Saya harap seseorang menemukan informasi ini berguna.
sumber
stdout.write
dan menghindari mendapatkan%
%
di akhir hanya dengan meneleponprocess.stdout.write('\n');
di akhir loop saya (jika Anda punya misalnya)%
hanya cara shell untuk mengatakan tidak ada baris baru di akhir file.%
di fileSatu perbedaan besar yang belum disebutkan adalah bahwa process.stdout hanya mengambil string sebagai argumen (bisa juga berupa piped stream), sedangkan console.log mengambil tipe data Javascript apa pun.
misalnya:
sumber
Perbedaan penting lainnya dalam konteks ini adalah dengan
process.stdout.clearLine()
danprocess.stdout.cursorTo(0)
.Ini akan berguna jika Anda ingin menunjukkan persentase pengunduhan atau pemrosesan hanya dalam satu baris. Jika Anda menggunakan clearLine (), cursorTo () dengan
console.log()
itu tidak berfungsi karena itu juga menambahkan \ n ke teks. Coba saja contoh ini:sumber
Saya baru saja memperhatikan sesuatu saat meneliti ini setelah mendapatkan bantuan dengan https.request untuk metode posting. Pikir saya membagikan beberapa masukan untuk membantu memahami.
process.stdout.write
tidak menambahkan baris baru sementaraconsole.log
, seperti yang telah disebutkan orang lain. Tetapi ada juga ini yang lebih mudah dijelaskan dengan contoh.process.stdout.write(d);
akan mencetak data dengan benar tanpa baris baru. Namunconsole.log(d)
akan mencetak baris baru tetapi data tidak akan ditampilkan dengan benar, memberikan ini<Buffer 12 34 56...
misalnya.Untuk
console.log(d)
menunjukkan informasi dengan benar, saya harus melakukan ini.Jadi pada dasarnya:
process.stdout.write
terus mencetak informasi saat data diambil dan tidak menambah baris baru.console.log
mencetak informasi apa yang diperoleh pada titik pengambilan dan menambahkan baris baru.Itu cara terbaik yang bisa saya jelaskan.
sumber
Perbedaan Sederhana adalah: metode console.log () secara otomatis menambahkan karakter baris baru. Ini berarti jika kita mengulang dan mencetak hasilnya, setiap hasil dicetak dalam baris baru.
metode process.stdout.write () tidak menambahkan karakter baris baru. berguna untuk mencetak pola.
sumber
Console.log implement process.sdout.write, process.sdout.write adalah buffer / stream yang akan langsung ditampilkan di konsol Anda.
Menurut serverlin puglin saya :
console = new Console(consoleOptions)
Anda dapat menulis ulang kelas konsol dengan sistem readline Anda sendiri .Anda dapat melihat sumber kode console.log:
Lihat lebih lanjut:
sumber