readline이란

rada·2025년 3월 24일

What is readline?

Node.js에서 사용자 입력을 받을 때 사용하는 모듈이다.
즉, 터미널(콘솔)에서 입력을 받고 출력하는 기능을 제공하는 라이브러리다.

기본 개념

  • node.js 환경에서 터미널(콘솔)에서 사용자 입력을 읽어들이고, 처리할 수 있게 해준다.
  • 비동기 방식으로 동작하므로, 이벤트 기반으로 입력을 받을 수 있다.
  • CLI(Command Line Interface) 프로그램을 만들 때 자주 사용된다.

Used

기본적인 사용자 입력받기

const readline = require('readline'); //Module import

//인터페이스 생성
const rl = readline.createInterface({
	input: process.stdin, //입력: 터미널에서 입력받음
  	output: process.stdout //출력: 터미널에서 출력
});

// 질문을 출력하고 사용자 입력을 받음
rl.question('당신의 이름은 무엇인가요? ', (answer) => {
	console.log(`안녕하세요, ${answer}님!`);
  rl.close(); //입력종료
});

실행방법

터미널에서 실행:

node script.js

사용자가 입력하면:

당신의 이름은 무엇인가요? 홍당무
안녕하세요, 홍당무님!

여러줄 입력 받기

사용자가 여러 개의 입력을 해야 하는 경우에는 rl.on('line', callback)을 사용한다.

const readline = require('readline');

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

let count = 0;
console.log('숫자를 입력하세요. 종료하려면 "exit"입력');
rl.on('line', (input) => {
	if(input.toLowerCase() === 'exit'){
    	console.log(`입력한 숫자의 개수: ${count}`);
      	rl.close();
    } else{
    	console.log(`입력한 값: ${input}`);
      	count++;
    }
})

실행 예시

숫자를 입력하세요. 종료하려면 "exit"입력.
1
입력한 값: 1
2
입력한 값: 2
3
입력한 값: 3
exit
입력한 숫자의 개수: 3

입력값을 배열에 저장하기

입력된 여러 값을 배열로 저장 할 수 있다.

const readline = requre('readline');
const rl = readline.createInterface({
	input: process.stdin,
  	output: process.stdout
});
let inputs = [];
console.log('입력할 값을 작성하세요. 종료하려면 "done" 입력');
rl.on('line', (input) => {
	if(input.toLowerCase() === 'done'){
    	console.log('입력된 값들', inputs);
      	rl.close();
    } else{
    	inputs.push(input);
    }
});

async/await과 함께 사용하기

readline은 기본적으로 콜백을 사용하지만, promise를 이용해 async/await스타일로 변환할 수도 있다.

const readline = require('readline');
const rl = readline.createInterface({
	input: process.stdin,
  	output: process.stdout
});
//promise 기반 질문 함수
const question = (query) => {
	return new Promise(resolve => rl.question(query,resolve));
};
(async () => {
	const name = await question('당신의 이름은? ');
  	const age = await question('나이는? ');
  	console.log(`안녕하세요, ${name}님! 당신은 ${age}살이군요.`);
  	rl.close();
})();
당신의 이름은? 홍길동
나이는? 25
안녕하세요, 홍길동님! 당신은 25살이군요.

readline을 사용하는 대표적인 경우

  • CLI(Command Line Interface) 프로그램 개발
  • 유저 입력이 필요한 콘솔 애플리케이션 (예: 터미널 기반 게임)
  • 간단한 채팅 프로그램
  • 데이터 입력이 필요한 스크립트
  • 파일을 한 줄씩 읽어 처리할 때도 사용 가능

파일에서 한 줄씩 읽기 (createInterface)

파일을 읽을 때도 readline을 활용할 수 있다.

const readline = require('readline');
const fs = require('fs');

const rl = readline.createInterface({
    input: fs.createReadStream('example.txt'), // 파일 읽기
    output: process.stdout,
    terminal: false
});

rl.on('line', (line) => {
    console.log(`읽은 줄: ${line}`);
});

readline의 주요 메서드 정리

메서드설명
rl.question(query, callback)한 번의 입력을 받고 종료
rl.on('line', callback)여러 줄 입력을 받을 때 사용
rl.close()입력 인터페이스 종료
rl.pause()입력 일시 정지
rl.resume()입력 정지된 입력을 다시 시작
rl.setPrompt(prompt)입력 프롬프트 설정

결론

  • readline은 Node.js에서 콘솔 입력을 처리하는 모듈이다.
  • question()을 사용하면 한 줄 입력을 받을 수 있다.
  • on('line')을 사용하면 여러 줄 입력을 받을 수 있다.
  • async/await로 변환하면 더 깔끔한 코드를 만들 수 있다.
  • 파일을 한 줄씩 읽을 때도 사용할 수 있다.

💡 CLI(커맨드라인 프로그램)를 만들거나, 사용자 입력을 받을 때 readline을 활용하면 편리하다! 🚀

참고 링크: https://nodejs.org/api/readline.html

profile
So that my future self will not be ashamed of myself.

0개의 댓글