[JS] node.js 콘솔에서 입력을 받아보자 - readline

2024. 10. 17. 23:35·FrontEnd/Javascript

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

https://velog.io/@pexe99/JavaScript-readline-그게-뭔데

https://socaeri.com/entry/Node-JS-readline-모듈로-입출력-방법

'FrontEnd > Javascript' 카테고리의 다른 글

Redux 초기 세팅 에러 발생  (0) 2025.01.21
[js] 배열을 생성하는 법  (0) 2024.12.02
[JS] Enum을 사용해보자.  (0) 2024.10.30
[JS] 모듈 / CommonJS와 ES Module은 무엇인가?  (1) 2024.10.22
[js] 배열을 정렬하는 방법-sort()  (0) 2024.06.18
'FrontEnd/Javascript' 카테고리의 다른 글
  • [js] 배열을 생성하는 법
  • [JS] Enum을 사용해보자.
  • [JS] 모듈 / CommonJS와 ES Module은 무엇인가?
  • [js] 배열을 정렬하는 방법-sort()
hwa2
hwa2
  • hwa2
    나도! 기억하고싶었어!
    hwa2
  • 전체
    오늘
    어제
    • 분류 전체보기 (27)
      • 공부 (4)
        • 네트워크 (2)
        • 알고리즘 (2)
        • 자료구조 (0)
      • 디자인패턴 (1)
      • DevOps (1)
        • 데이터베이스 (1)
      • BackEnd (11)
        • JAVA (7)
        • Spring (4)
      • FrontEnd (6)
        • Javascript (6)
      • 코딩테스트 풀어보자! (1)
      • 해결해보자. (1)
      • 플젝..해보자.. (2)
      • 우테코 7기 (0)
  • 블로그 메뉴

    • 홈
    • 태그
    • 방명록
  • 링크

  • 공지사항

  • 인기 글

  • 태그

    프리코스
    싱글톤패턴
    함수형인터페이스
    스레드 동기화
    FunctionalInterface
    우테코 7기
    자바스크립트
    멋쟁이사자처럼후기
    jdk8
    싱글톤컨테이너
    TemplateMethodPattern
    readline
    JS
    Java
    회고
    node.js
    JavaScript
    우테코7기
    nodejs
    우테코
  • 최근 댓글

  • 최근 글

  • hELLO· Designed By정상우.v4.10.3
hwa2
[JS] node.js 콘솔에서 입력을 받아보자 - readline
상단으로

티스토리툴바