readline

zimablue·2023년 5월 8일

javascript

목록 보기
4/30

코어 모듈

노드는 웹 브라우저 이외의 환경에서도 사용할 목적으로 만들어 졌기에 기존의 웹 브라우저 기반의 자바스크립트와는 다른 API를 제공합니다.
DOM, BOM 등의 웹 문서를 조작하는 API가 존재하지 않는 대신, 운영체제 정보나 파일 정보에 접근하거나 http 서버로 사용하는 등의 기능을 제공합니다.


-TutorialPost



readline

노드에서 제공하는 대화형 I/O 유틸 코어 모듈입니다.
터미널을 통해 유저에게 데이터를 받아올 수 있습니다.


모듈

readline 코어 모듈을 불러옵니다.

const readline = require("readline");

인터페이스

불러온 readline 모듈의 인터페이스를 생성합니다.
readline의 인스턴스들은 인터페이스를 통해 이루어집니다.

const rl = readline.createInterface({
    input: process.stdin,
  	// 터미널의 입력을 읽습니다.
    output: process.stdout
  	// 터미널에 출력합니다.
});

메서드

인터페이스에서 메서드를 사용합니다.


question

question 메서드는 (질문, 콜백함수)로 이루어져 있습니다.
node.js를 실행하면 질문이 터미널에 출력되고, 터미널에 입력을 하면 입력한 데이터가 콜백의 매개변수로 전달됩니다.

rl.question('터미널에 출력될 질문을 입력하시오.', (터미널입력값) => {
  console.log(`당신이 입력한 값은 ${터미널입력값} 입니다.`);
  
  rl.close();
  // rl.close()는 node.js를 종료합니다.
  // rl.close()가 없다면 데이터를 입력후에도 종료되지 않고 터미널에 입력이 이어집니다.
  // (단, 질문에 대한 답변은 없습니다.)

on

  • line
    :입력 값을 받을 때 사용되는 이벤트입니다.
    입력값은 콜백함수의 매개변수로 전달됩니다.

  • close
    : 입력이 끝났을 때부터 실행되는 이벤트입니다.

rl.on('line', function (line) {
// 입력 값을 받을 때 사용하는 코드
// 입력 값을 1줄을 받을지 1줄 이상을 받을지와 같은 코드를 작성합니다.
  rl.close();
  // line 이벤트를 종료
})

rl.on('close',function(){
// 입력이 끝났을 때 사용하는 코드
// 입력 받은 값을 사용하는 코드를 작성합니다.
    process.exit();
});

한 줄 받는 경우 코드 예시

1 2 3
let input = [];

rl.on("line", (line)=>{
	input = 문자열.split(' ').map(element => parseInt(element));
	rl.close();
});

여러 줄 받는 경우 코드 예시

1
2
3
let input = [];

rl.on("line", (line)=>{
	input.push(parseInt(line)));
});



백준용 예시

const readline = require("readline");

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

let input = [];

rl.on('line', (line) => {
	// 한줄
  	// input = line.split(' ').map(elem => parseInt(elem));
  	rl.close();
  
 	// 여러줄
  	// input.push(line);

}).on('close',() => {
	// console.log(input)
  
    process.exit();
});

0개의 댓글