FrontEnd/Javascript
[JS] node.js 콘솔에서 입력을 받아보자 - readline
hwa2
2024. 10. 17. 23:35
js 개발 시 콘솔 출력은 당연하게 console.log() 를 사용하였습니다. 그러나 콘솔로 출력을 하는 방법에 대해서는 생각해 본 적이 없습니다. 우아한테크코스 프리코스를 진행하던 중 입력값을 받아오기 위해 사용하는 라이브러리 내에서 readline을 사용하는 것을 봤습니다. 사용해본 적이 없는 모듈이기에 어떻게 사용되는 것인지 확인해보겠습니다.
readline이란?
node.js에 내장되어 있는 core모듈로 한번에 한 줄씩 데이터를 읽기 위한 인터페이스를 제공해주는 모듈입니다.
readline 사용하기
1. readline 모듈 사용하기
import readline from "readline";
2. readline 인터페이스 생성
readline의 createInterface 메서드를 사용하여 인스턴스를 생성합니다. 이 인스턴스는 readable stream과 writable stream을 가장 일반적으로 process.stdin(표준 입력) 및 process.out(표준 출력) 스트림을 사용합니다.
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
process는 node.js에서 제공하는 전역 객체이며 현재 실행 중인 프로세스에 대한 정보 제공과 제어 기능을 제공합니다.
- process.stdin : 표준 입력(터미널에서 입력되는 데이터)을 읽을 수 있는 readableStream 입니다.
- process.stdout : 표준 출력(터미널에서 출력되는 데이터)을 쓸 수 있는 writableStream 입니다.
3. readline 이벤트 실행
아래와 같이 readline의 on을 사용하면 지정한 이벤트를 실행할 수 있습니다.
rl.on(event, callback);
line
- 한 줄 씩 입력받아 실행하며 Enter 또는 Return을 누를 때마다 발생합니다.
- 터미널을 통해 입력된 내용은 callback함수 인자로 넘어온다. (예시의 input)
- 입력된 내용은 문자열로 받아옵니다.
rl.on('line', ((input) => {
console.log(`입력받은 값: ${input}`);
});
- rl.close() 를 입력하지 않으면 무한대로 입력을 받습니다.
- 입력을 받을 때마다 callback 함수가 실행됩니다.
close
- readline이 종료될 때 이벤트가 실행됩니다.
rl.on('close', () => {
console.log(`Close readline.`);
})
전체 코드
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
rl.on('line', (input) => {
console.log(`입력받은 값: ${input}`);
rl.close();
});
rl.on('close', () => {
console.log(`Close readline.`);
})
실행 내용
hello
입력받은 값: hello
Close readline.
4. 질문을 출력하고 입력을 받아보자.
- question을 사용하면 첫번째 입력된 문자열을 콘솔에 출력한 후 입력을 받습니다.
rl.question('이름을 입력하세요. \n', (name) => {
console.log(`Hello ${name}`);
rl.close();
});
실행 내용
이름을 입력하세요.
ihwa
Hello ihwa
Javascript 실행하는 방법 그런데 node.js를 곁들인..
아래 명령어를 이용하면 터미널 내에서 node.js를 실행시킬 수 있습니다.
위 코드들을 작성한 뒤 직접 실행해보세요 :)
node {파일이름}.js
참고
https://nodejs.org/docs/latest/api/readline.html