하루살이 개발일지

[Node.js] readline 모듈로 사용자에게 input값을 받아와 출력해주기 본문

웹개발/Node.js

[Node.js] readline 모듈로 사용자에게 input값을 받아와 출력해주기

harusari 2023. 6. 13. 20:52

💡 readline 모듈이란?

Node.js 환경에서 사용자로부터 입력을 받는 데에 주로 사용됨


💡 간단한 예제 및 설명

const readline = require('readline');

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

rl.question('당신의 이름은 무엇인가요? ', (answer) => {
  console.log(`안녕하세요, ${answer}님!`);
  rl.close();
});
  • require 메서드
    • 다른 파일이나 모듈을 불러오는 함수
    • require('readline') → ‘readline’ 모듈을 불러와 readline 모듈의 속성을 사용할 수 있게 해줌
  • readline 모듈
    • Node.js의 내장모듈
    • 사용자의 input을 받는 인터페이스 제공
  • process.stdin , process.stdout
    • ‘process’ 객체 : 현재 실행 중인 프로세스에 관한 정보와 제어 기능 제공
    • 걍 사용자한테 입력받아 출력을 보여주고 싶으면 이거 사용하면 됨
    • ‘stdin’ (standard input) : 사용자의 input을 받는 데 사용
    • ‘stdout’ (standard output) : 프로세스의 출력을 화면에 표시
  • readline.createInterface
    • ‘readline.Interface’ 객체를 생성
      • 이벤트 기반의 API를 제공해, 비동기적으로 사용자의 입력을 처리할 수 있음
      • 이벤트는 사용자 입력을 기반으로 발생하므로, 이벤트의 콜백 함수를 사용해 사용자 입력을 처리할 수 있음
    • 객체를 인자로 받아, input에는 입력한 값을, output에는 출력 값을 지정 (즉 아까 위에서 말한 process.stdin , process.stdout)
    •  rl
      • ‘readline.createInterface’ 가 반환하는 ‘readline.Interface’ 객체를 변수에 저장한 것
      • 즉 rl은 여러가지 메서드와 이벤트를 가지고 있게 됨 (readline.Interface가 제공하는)
  • rl.question()
    • ‘readline.Interface’ 객체가 가진 메서드 중 하나
    • 사용자에게 질문을 하고, 사용자의 입력을 받아 콜백 함수로 전달
    • 즉 사용자가 입력한 값을 ‘answer’ 라는 매개변수를 통해 콜백 함수에 전달
  • rl.close()
    • readline 인터페이스 종료
    • 호출하면 더 이상 입력을 받지 않음

💡 readline.Interface 객체가 가진 대표적인 메서드 / 이벤트

 

1. Methods

  • setPrompt(prompt): 새로운 프롬프트를 설정
  • prompt([preserveCursor]): 설정된 프롬프트를 사용자에게 표시
  • question(query, callback): 사용자에게 질문을 하고 답변을 받음
  • pause(): 입력 스트림을 일시 중지
  • resume(): 일시 중지된 입력 스트림을 다시 시작
  • close(): readline 인터페이스를 닫음. 입력 스트림이 열려 있으면 닫힘
  • write(data[, key]): 출력 스트림에 데이터를 씀
  • on(event, callback): 지정된 이벤트에 대한 콜백 함수를 등록. 이벤트에는 아래에서 설명할 이벤트 이름을 사용

2. Events

  • line: 사용자가 한 줄의 입력을 완료하면 발생. 이 이벤트의 콜백 함수는 사용자의 입력을 인자로 받음
  • pause: 입력 스트림이 일시 중지되면 발생
  • resume: 일시 중지된 입력 스트림이 다시 시작되면 발생
  • close: readline 인터페이스가 닫히면 발생
  • history: 사용자의 과거 입력을 배열로 제공