Node.js 의 readline 모듈 사용 에 대한 자세 한 설명
5616 단어 Node.jsreadline 모듈
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'이벤트 가 모두 촉 발 될 것 이다.
이상 이 바로 본 고의 모든 내용 입 니 다.여러분 의 학습 에 도움 이 되 고 저 희 를 많이 응원 해 주 셨 으 면 좋 겠 습 니 다.
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Grunt에서 즉석 템플릿 엔진이 필요했기 때문에 마침내 만들었습니다.jade 라든지 ejs 라고도 좋지만, 보다 심플하게 하고 싶다고 생각해. json을 떨어 뜨렸다. 플레이스홀더(:TAG)를 마련해, 이런 HTML 만들어 둔다. template.html 자리 표시자의 문자열을 키로...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.