Node.js 의 readline 모듈 사용 에 대한 자세 한 설명

readline 이란 무엇 입 니까?
readline 은 읽 을 수 있 는 흐름 에서 데 이 터 를 한 줄 씩 읽 을 수 있 습 니 다.예 를 들 어 process.stdin 등 입 니 다.node.js 명령 행 모드 에서 기본적으로 readline 모듈 을 도 입 했 지만 node.js 를 사용 하여 스 크 립 트 를 실행 하려 면 require(readline)방식 으로 수 동 으로 이 모듈 을 도입 해 야 합 니 다.
readline 을 어떻게 사용 합 니까?
인 스 턴 스 생 성
우선,인터페이스 인 스 턴 스 를 만 들 고 Object 형식의 인 자 를 제공 합 니 다.매개 변 수 는 다음 과 같 습 니 다:input:감청 가능 한 읽 기 흐름(필수)output:readline 에 기록 가능 한 쓰기 흐름(필수)completer:Tab 자동 완성 에 사용 되 는 선택 가능 함수(자주 사용 되 지 않 음)terminal:input 와 output 흐름 이 TTY 처럼 취급 되 기 를 원한 다 면 매개 변수 true 를 전달 하고 ANSI/VT 100 을 통 해 코드 를 바 꿉 니 다.기본적으로 isTTY 가 output 흐름 에서 실례 화 되 었 는 지 확인 합 니 다.(자주 사용 되 지 않 음)history Size:줄 의 기록 최대 치 를 유지 합 니 다.이 값 을 0 으로 설정 하지 않 기 위해 서 는 기본 값 이 30 입 니 다.terminal 이 true 로 설정 되 거나 내부 출력 검 사 를 통과 할 때 만 이 옵션 이 작 동 합 니 다.그렇지 않 으 면 과거 캐 시 시스템 이 초기 화 되 지 않 습 니 다.(자주 사용 하지 않 음)
첫 번 째 방식:두 개의 필수 매개 변수 만 전달 합 니 다.

const readLine = require('readline');
 let rl = readLine.createInterface(process.stdin, process.stdout);
두 번 째 방식:다른 필수 매개 변 수 를 입력 할 수 있 습 니 다.

const readLine = require('readline');
 let rl = readLine.createInterface({
  input: process.stdin,
  output: process.stdout,
  //       
 })
실례

const readLine = require('readline');
 let rl = readLine.createInterface({
  input: process.stdin,
  output: process.stdout,
  prompt: '>    '
 })
 //   
 rl.prompt(); //        :>   
메모:이 코드 가 호출 되면 Node.js 프로그램 은 readline 인터페이스 가 닫 힌 것 을 알 고 인터페이스 가 입력 흐름 에서 데 이 터 를 계속 기다 리 기 때문에 종료 되 지 않 습 니 다.
방법.
아래 의 모든 인 스 턴 스 는 다음 과 같은 rl 에 따라 생 성 됩 니 다.

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

1、rl.setPrompt([prompt])
이 파일 을 node 로 실행 하고 rl.prompt()를 호출 할 때 터미널 에서 설정 한 알림 prompt,즉">입력 하 십시오"를 볼 수 있 습 니 다.

rl.setPrompt('>    ')
메모:이 방법 은 위의 인 스 턴 스 매개 변수 설정 과 같은 효과 입 니 다.
2、rl.prompt([preserveCursor])
사용자 의 입력 을 위해 readline 을 준비 하고 기 존의 setPrompt 옵션 을 새로운 줄 에 놓 아 사용자 가 새로운 곳 에서 입력 을 시작 하도록 합 니 다.커서 위치 가 0 으로 다시 설정 되 지 않도록 preserveCursor 를 true 로 설정 합 니 다.   줄 바 꾸 기 입력 이 필요 하 다 면 새 줄 에 정 보 를 입력 하고 prompt 에 추가 할 수 있 습 니 다.

rl.prompt(); //        :>   
3、rl.write(data[, key])
readline.create Interface()를 사용 하여 인 스 턴 스 를 만 들 때,입력 흐름 이 null 또는 undefined 이면 출력 흐름 에 데 이 터 를 기록 합 니 다.   key 는 키 시퀀스 를 나타 내 는 글자 크기 의 대상 입 니 다.터미널 이 TTY 이면 사용 할 수 있 습 니 다.

rl.write('Delete me!');
 // Simulate ctrl+u to delete the line written previously
 rl.write(null, {ctrl: true, name: 'u'});
4、rl.question(query, callback)
알림 내용 query 를 미리 만 들 면 사용자 가 응답 을 입력 한 후에 지정 한 반환 함수 callback 을 실행 합 니 다.

rl.question('      ?
', function(prompt) { console.log(' :' + prompt); rl.close(); })
5、rl.pause()
readline 의 입력 흐름 을 일시 정지 하면 회복 할 수 있 습 니 다.rl.resume(),rl.write(),rl.question()과 rl.prompt()는 모두 이 입력 흐름 을 복원 할 수 있 습 니 다.   이 방법 을 호출 하면 pause 이벤트 가 발생 합 니 다.
6、rl.resume()
readline 의 입력 흐름 을 복원 합 니 다.   이 방법 을 호출 하면 resume 이벤트 가 발생 합 니 다.
7、rl.close()
readline 에서 만 든 인 스 턴 스 를 닫 고 입 출력 흐름 을 제어 하지 않 습 니 다.   이 방법 을 호출 하면 close 이벤트 가 발생 합 니 다.
이벤트
1.라인 이벤트
언제든지 입력 흐름 이 줄 끝 문자(,\r,또는\r)를 받 았 을 때 터치 합 니 다.즉,사용자 가 입력 한 후에 리 턴 이나 리 턴 키 를 눌 렀 을 때 이 이 벤트 를 터치 합 니 다.사용자 의 입력 을 감청 하 는 데 사용 할 수 있다.

rl.on('line', function (line) {
  console.log('         :' + line);
 })

2.pause 이벤트
입력 흐름 이 일시 정지 되 었 을 때 터치 합 니 다.즉,rl.pause()를 호출 하거나 입력 흐름 을 일시 정지 하지 않 았 습 니 다.SIGCONT/SIGINT 를 받 았 을 때,readline.Interfacce 인 스 턴 스 에 SIGCONT/SIGINT 모니터 가 등록 되 어 있 지 않 았 을 때 도 터치 합 니 다.또한 입력 흐름 이 SIGSIP 를 받 기 전에 일시 정지 되 었 다 면 이 사건 은 실행 되 지 않 습 니 다.

rl.on('pause', function() {
  console.log('     ...')
 })

3.resume 이벤트
입력 흐름 이 다시 시 작 될 때,rl.resume(),또는 rl.write(),rl.question(),rl.prompt()를 호출 합 니 다.

rl.on('resume', function() {
  console.log('     ...')
 })
4.close 이벤트
rl.close()방법 을 호출 할 때 이 이 벤트 를 촉발 하거나 입력 흐름 이'끝'이벤트 에 수 신 됩 니 다.아래 의 임의의 상황 은 close 사건 을 촉발 합 니 다.close 이벤트 가 발생 하면 readline.Interaface 인 스 턴 스 가 종료 되 었 다 고 생각 합 니 다.1),rl.close()방법 이 호출 되면 readline.Interaface 인 스 턴 스 는 입 출력 흐름 의 제어 권 을 포기 합 니 다.2),입력 흐름 은 자신의"end"이 벤트 를 수신 합 니 다.3)입력 흐름 은-C 로 수신 되 고 SIGINT 신 호 를 보 내 며 readline.Interfacce 인 스 턴 스 에 SIGINT 이벤트 의 모니터 를 등록 하지 않 았 습 니 다.4)、입력 흐름 이-D 로 수신 되 고 전송 종료 신호(EOF,end-of-transmission)를 보 냅 니 다.5)、EOT:경계 부 호 는 하나 이상 의'>'를 입력 하고 리 턴 을 누 를 때 입 니 다.

rl.on('close', function() {
  console.log('     ...');
  process.exit(0); //       
 })

5.SIGCOUT(이 사건 은 window 시스템 에서 작 동 하지 않 음)
-Z 를 사용 하여 Node.js 프로 세 스 를 배경 으로 이동 하면 SIGCONT 이벤트 가 실 행 됩 니 다.그리고 fg(1)명령 을 사용 하여 프론트 로 이동 할 수 있 습 니 다.   입력 흐름 이 SIGTSIP 를 받 기 전에 중단 되 었 다 면 이 사건 은 촉발 되 지 않 았 을 것 입 니 다.
6、SIGINT
입력 흐름 이-C 명령 을 받 으 면 우리 가 잘 아 는 SIGINT 이벤트 가 실 행 됩 니 다.만약 당시 SIGINT 이벤트 감청 기 를 등록 하지 않 았 다 면,입력 흐름 이 SIGINT 신 호 를 받 았 을 때,'pause'이벤트 와'close'이벤트 가 모두 촉 발 될 것 이다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.

좋은 웹페이지 즐겨찾기