...
노드 콘솔 입력 받기
보통 자바스크립트를 쓰면서 입출력은 웹에서 처리했다. 웹페이지에서 form으로 입력 받고, console.log나 document.write() 등 을 통해서 출력을 했다. 하지만 이는 어디까지나 브라우저에서 묶인 자바스크립트로서의 동작이다. 브라우저로부터 독립된 node.js의 자바스크립트는 다른 C나 JAVA같이 콘솔창에서 입출력을 제어할수 있을까?
정답은 할수는 있지만, C같이 결코 간단하게 처리될수는 없다. 차근차근 하나씩 알아보자.
노드 콘솔 입력
readline 모듈
readline 모듈은 JS 내장 모듈로, 한 번에 한 줄씩 Readable 스트림 (예 : process.stdin)에서 데이터를 읽기위한 인터페이스를 제공한다.
처음 생성 시 createInterface를 통해 input, output을 설정해준다.
다음에, 입력을 갖고 처리할 callback함수인 function(line)을 설정해준다.
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.question('What do you think of Node.js? ', (answer) => {
// 입력값이 answer매개변수로 들어온다.
console.log(`Thank you for your valuable feedback: ${answer}`);
rl.close();
});
> What do you think of Node.js?
>> [user] : blabla
> Thank you for your valuable feedback: blabla
매개변수 line에 할당되는 내용이 입력값이다 (문자열로 할당)
close()
위 처럼 입력을 한번만이 아닌, 원하는만큼 받기 위해서는 원하는 조건을 입력한 후, rl.close()를 기재하면 된다.
즉, rl.close()는 말 그대로 입력을 멈추는 기능을 하는 것!
const readline = require('readline');
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
let count = 0;
rl.on('line', (input) => {
console.log(`Recived : ${input}`);
count += 1;
if (count === 3) {
rl.close();
}
// 위의 경우 입력을 3번 연속으로 받은 후 close한다
});
readline의 경우 입력을 비동기적으로 처리한다.
노드 콘솔 출력
지금까지 해왔듯이 console.log 를 사용하면 된다.
인용한 부분에 있어 만일 누락된 출처가 있다면 반드시 알려주시면 감사하겠습니다
이 글이 좋으셨다면 구독 & 좋아요
여러분의 구독과 좋아요는
저자에게 큰 힘이 됩니다.