node.js의 "process.stdout.write"와 "console.log"의 차이점은 무엇입니까?node.js의 "process.stdout.write"와 "console.log"의 차이점은 무엇입니까?
편집 : 변수에 console.log를 사용하면 process.stdout.write를 사용하는 동안 읽을 수없는 문자가 많이 표시되어 개체가 보입니다.
왜 그럴까요?
node.js의 "process.stdout.write"와 "console.log"의 차이점은 무엇입니까?node.js의 "process.stdout.write"와 "console.log"의 차이점은 무엇입니까?
편집 : 변수에 console.log를 사용하면 process.stdout.write를 사용하는 동안 읽을 수없는 문자가 많이 표시되어 개체가 보입니다.
왜 그럴까요?
console.log()
은 서식이 지정된 출력으로 process.stdout.write
을 호출합니다. 구현 방법은 console.js의 format()
을 참조하십시오. 현재
Console.prototype.log = function() {
this._stdout.write(util.format.apply(this, arguments) + '\n');
};
분명히 단지 끝 부분에 라인 중단으로 process.stdout.write되어 CONSOLE.LOG 노드 문서를 보면 :
console.log = function (d) {
process.stdout.write(d + '\n');
};
출처 : http://nodejs.org/docs/v0.3.1/api/process.html#process.stdout
나중에 돌아 다니는 사람들은 v0.3.1이 오래 전부터 상황이 바뀌 었음을 유의하십시오. :) –
... 아니. 그냥 v.9.9 문서를 보았고 console.log는 여전히 linebreak가있는 process.stdout.write의 별칭입니다. 의견을 말하기 전에 연구를하십시오. http://nodejs.org/docs/v0.9.9/api/process.html#process.stdout –
1) v0.9.9는 2 살입니다. 2) 설명서가 잘못되었습니다. [v0.9.9 형식 util을 통해 보간됩니다. (https://github.com/joyent/node/blob/v0.9.9-release/lib/console.js#L52) –
나는 이것이 아주 오래된 질문이다하지만 난 그냥 나에게 원하는 process.stdout.write
및 console.log
사이의 주요 차이점에 대해 이야기 누구를 보지 못했다 알고 그것. Mauvis Leford 및 TK-421는 지적
는 console.log
라인 (\n
)의 끝에 line-break
문자를 추가하지만 그게 무엇 모두가 아니다.
코드는 적어도 0.10.X
버전 이후로 변경되지 않았으므로 이제 5.X
버전이 있습니다. 당신이 볼 수 있듯이,이 .apply(this, arguments)
을 말한다 일부이며 그 기능에 큰 차이가
Console.prototype.log = function() {
this._stdout.write(util.format.apply(this, arguments) + '\n');
};
:
는 코드입니다. 당신이 마지막에 브레이크 라인을 넣지 않으면process.stdout.write("Hello World\n");
: 당신은이 같은 거기에 뭔가를 쓸 수
process.stdout.write
은 아주 기본적인 기능이 있습니다 : 예와 그 설명하는 것이 더 쉽습니다 당신이 당신의 문자열 뒤에 이런 일을 이상한 문자를 얻을 것이다 :
process.stdout.write("Hello World"); //Hello World%
(나는 그 "프로그램 종료"같은 것을 의미한다고 생각, 그래서 당신은 당신 process.stdout.write
가에서 사용 된 경우에만 표시됩니다 당신의 파일의 끝 그리고 당신은 ' t 중단 줄 추가)
반면에 console.log
은 더 많은 작업을 수행 할 수 있습니다.
당신은 이상한 문자가 두 개 이상의 문자열
console.log("Hello", "World");
당신을 작성할 수 있습니다
사라 않았다 같은 방법으로도
console.log("Hello World"); //You don't need the break line here because it was already formated
과에서 사용할 수 있습니다 협회를 만들 수있다
console.log("Hello %s", "World") //Useful when "World" is inside a variable
가의 util.format.apply
부분 덕분에 주어 (I 정확히이가하는 일에 대해 많은 얘기 할 수 있지만, 당신이 내 포인트를 얻을, 당신은 here 자세한 내용을보실 수 있습니다).
누군가가이 정보를 유용하게 사용하기를 바랍니다.
'stdout.write'를 사용하고'% '를 얻는 방법을 설명했다면 매우 도움이 될 것입니다. –
'process.stdout.write ('\ n ')를 호출하여 끝에'%'를 가져 오는 문제를 해결했습니다. ');'내 루프의 끝에서 (예를 들어 있다면) –
언급되지 않은 큰 차이점 중 하나는 process.stdout은 문자열 (파이프 된 스트림 일 수도 있음) 만 가져 오는 반면, console.log은 자바 스크립트 데이터 형식을 사용한다는 것입니다.
예컨대 : 포스트 방법에 대한 https.request 도움말보기 후이 연구하면서 내가 뭔가를 발견했습니다
// ok
console.log(null)
console.log(undefined)
console.log('hi')
console.log(1)
console.log([1])
console.log({one:1})
console.log(true)
console.log(Symbol('mysymbol'))
// any other data type passed as param will throw a TypeError
process.stdout.write('1')
// can also pipe a readable stream (assuming `file.txt` exists)
const fs = require('fs')
fs.createReadStream('file.txt').pipe(process.stdout)
매우 크고 중요한 차이. 감사! – chriskelly
. 이해를 돕기 위해 의견을 나누었습니다.
process.stdout.write
다른 사람들이 언급 한 것처럼 console.log
이 수행하는 동안 새 줄을 추가하지 않습니다. 그러나 예제로 설명하기가 더 쉽습니다.
var req = https.request(options, (res) => {
res.on('data', (d) => {
process.stdout.write(d);
console.log(d)
});
});
process.stdout.write(d);
은 새로운 라인없이 데이터를 제대로 인쇄됩니다. 그러나 console.log(d)
은 새 행을 인쇄하지만 데이터는 올바르게 표시되지 않으며 예를 들어 <Buffer 12 34 56...
이됩니다.
console.log(d)
정보를 올바르게 표시하려면이 작업을 수행해야합니다. 그래서 기본적으로
var req = https.request(options, (res) => {
var dataQueue = "";
res.on("data", function (d) {
dataQueue += d;
});
res.on("end", function() {
console.log(dataQueue);
});
});
:
process.stdout.write
지속적으로 데이터가 검색되고 새로운 행을 추가하지 않는 등의 정보를 인쇄합니다.
console.log
내가 설명 할 수있는 가장 좋은 방법입니다.
이 컨텍스트의 또 다른 중요한 차이점은 process.stdout.clearLine()
과 process.stdout.cursorTo(0)
입니다. 당신은 하나 개의 라인에서 다운로드 또는 처리의 비율을 표시 할 경우
이 유용 할 것이다.clearLine()을 사용하는 경우 console.log()
과 함께 cursorTo()를 사용하면 \ n을 텍스트에 추가하기 때문에 작동하지 않습니다. 이 예를 사용해 보시기 바랍니다.
var waitInterval = 500;
var totalTime = 5000;
var currentInterval = 0;
function showPercentage(percentage){
process.stdout.clearLine();
process.stdout.cursorTo(0);
console.log(`Processing ${percentage}%...`); //replace this line with process.stdout.write(`Processing ${percentage}%...`);
}
var interval = setInterval(function(){
currentInterval += waitInterval;
showPercentage((currentInterval/totalTime) * 100);
}, waitInterval);
setTimeout(function(){
clearInterval(interval);
}, totalTime);
예제를 제공해 주실 수 있습니까? console.log()는 형식화 된 출력으로 process.stdout.write를 호출합니다. 구현은 console.js의 format()을 참조하십시오. –
답변으로 게시 =) – ajsie