JS
JS, readline 모듈을 이용해 입력값 받기
Hyeon_E
2023. 6. 15. 22:34
[ readline ]
Readable Stream에서 한 번에 한줄 씩 데이터를 읽기 위한 인터페이스를 제공하는 모듈
즉 입출력을 한줄씩 처리하는 모듈이라고 생각하면 됨
[ 기본 사용법 ]
▶ readline 모듈 불러오기
const readline = require("redaline");
- require 메서드
- 다른 파일이나 모듈을 불러오는 함수
- readline 모듈
- Node.js의 내장모듈
- 사용자의 input을 받는 인터페이스 제공
▶ 인터페이스 생성하기
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
- process.stdin , process.stdout
- ‘process’ 객체 : 현재 실행 중인 프로세스에 관한 정보와 제어 기능 제공
- 사용자한테 입력받아 출력을 보여주고 싶으면 이것을 사용하면 됨
- ‘stdin’ (standard input) : 사용자의 input을 받는 데 사용
- ‘stdout’ (standard output) : 프로세스의 출력을 화면에 표시
- readline.createInterface
- ‘readline.Interface’ 객체를 생성
- 이벤트 기반의 API를 제공해, 비동기적으로 사용자의 입력을 처리할 수 있음
- 이벤트는 사용자 입력을 기반으로 발생하므로, 이벤트의 콜백 함수를 사용해 사용자 입력을 처리할 수 있음
- 객체를 인자로 받아, input에는 입력한 값을, output에는 출력 값을 지정
- input(process.stdin) ,output( process.stdout)
- ‘readline.Interface’ 객체를 생성
- rl
- ‘readline.createInterface’ 가 반환하는 ‘readline.Interface’ 객체를 변수에 저장한 것
- 즉 rl은 readline.Interface가 제공하는 여러가지 메서드와 이벤트를 가지고 있게 됨
▶ 입출력을 처리하는 코드 작성
rl.on("line", (line) => {
/*입력받는 값을 처리하는 코드*/
rl.close();
});
rl.on("close", () => {
/*입력이 끝나고 실행할 코드*/
process.exit();
});
- rl.on(): 인터페이스가 가지는 on()메서드를 사용해 이벤트와 콜백함수를 전달함
- “line”: 입력받는 값을 한 줄씩 읽어 문자열 타입으로 전달하는 역할 하는 이벤트
- /입력 받는 값을 처리하는 코드*/: "line" 이벤트로 받은 내용을 적절하게 처리하는 코드
- rl.close(): 인터페이스를 종료함으로써 무한히 입력받는 것을 방지함
- rl.close()가 호출되면 입력이 끝났다는 것이고, 다음에 "close"이벤트를 발생시켜 입력값을 활용하여 출력값을 도출하는 코드를 작성하게 됨
- "close": 더이상 입력되는 값이 없을 때 실행되는 이벤트
- /*입력이 끝나고 실행할 코드*/: 입력이 종료되었음을 알리는 "close"이벤트가 호출된 다음 입력값을 활용해 출력값을 도출하는 코드를 작성함
- process.exit(): 프로세스를 종료시킴
[ readline의 대표적인 메서드 ]
- question(query, callback): 질문을 출력하고 사용자의 입력을 받음
- query는 출력할 질문을 나타내는 문자열이며, callback은 사용자의 입력을 처리하는 콜백 함수
- pause(): Interface의 입력을 일시 정지
- 입력 이벤트(line)를 받지 않음
- resume(): Interface의 입력을 재개함
- 입력 이벤트(line)를 다시 받음
- close(): Interface를 닫고 프로그램 실행을 종료
- on(eventName, callback): readline.Interface 객체에서 이벤트를 처리하기 위해 사용되는 메서드
- evenName: 처리할 이벤트의 이름을 나타내는 문자열
- line, close, pause, resume 등의 이벤트 이름을 사용할 수 있음
- callback: 이벤트가 발생했을때 실행할 콜백함수, 콜백 함수는 이벤트와 관련된 정보를 전달받을 수 있음
- evenName: 처리할 이벤트의 이름을 나타내는 문자열