Programming/웹프로그래밍

[NodeJs] NodeJs 입력받기 - readline 모듈사용

쌍쌍바나나 2016. 3. 29. 12:24
반응형

들어가며

  모든 언어에서 기본적으로 배우는 내용이 입력/출력 입니다. 이번 포스팅은 키보드로 부터 입력을 받는 예제입니다. 처음에는 1번 입력받는 예제를 설명하고, 반복적으로 입력을 받는 예제에 대해서 설명해 볼까 합니다.

구현하기

1번 입력 받는 예제

  입력을 받기 위해서는 readline의 모듈을 사용하시면 됩니다. 최초에는 createInterface를 통해 input과 output을 생성을 해주고, quest메소드에 callback 함수를 생성합니다. 최초 질문을 "Do you like banana?"라고 했을때 키보드로 부터 입력이 받아지면 answer에 담겨져 옵니다. 여기서 callback함수는 간단하게 이벤트가 왔을때 실행되는 함수라고 생각하시면 됩니다. 키보드로 부터 입력이 왔으니 해당 function이 호출되고,  파라미터로 입력받은 answer가 콘솔에 출력이 됩니다. 
var readline = require('readline');

var r = readline.createInterface({
	input:process.stdin,
	output:process.stdout
});

r.question("Do you like banana?", function(answer) {
	console.log("Hi Hong", answer);
	r.close() // 반드시 close()를 해줘야 합니다.
});
/* 실행결과
Do you like banana? yes
Hi Hong yes
*/


반복적으로 입력받는 예제

  위와 동일하게 입출력을 담당하는 interface를 생성합니다. 생성받은 interface에 prompt를 세팅을 해줍니다. 이렇게 설정하면 아래 출력화면과 같이 "> hi" 표시가 됩니다. line은 한줄을 입력받는 내용이고, 사용자가 키보드로 한줄 입력하면 callback함수의 파라미터로 line이 들어오게 됩니다. 종료조건인 exit가 아니면 화면에 콘솔에 line을 출력하고, 다시 prompt를 실행합니다. 
var readline = require('readline');

var r = readline.createInterface({
	input:process.stdin,
	output:process.stdout
});
r.setPrompt('> ');
r.prompt();
r.on('line', function(line){
	if (line == 'exit') {
		r.close();
	}
	console.log(line);
	r.prompt()
});
r.on('close', function() {
	process.exit();
});
/* 실행결과
> hi
hi
> bye
bye
> exit
*/


반응형