노드는 웹 브라우저 이외의 환경에서도 사용할 목적으로 만들어 졌기에 기존의 웹 브라우저 기반의 자바스크립트와는 다른 API를 제공합니다.
DOM, BOM 등의 웹 문서를 조작하는 API가 존재하지 않는 대신, 운영체제 정보나 파일 정보에 접근하거나 http 서버로 사용하는 등의 기능을 제공합니다.
-TutorialPost
노드에서 제공하는 대화형 I/O 유틸 코어 모듈입니다.
터미널을 통해 유저에게 데이터를 받아올 수 있습니다.
readline 코어 모듈을 불러옵니다.
const readline = require("readline");
불러온 readline 모듈의 인터페이스를 생성합니다.
readline의 인스턴스들은 인터페이스를 통해 이루어집니다.
const rl = readline.createInterface({
input: process.stdin,
// 터미널의 입력을 읽습니다.
output: process.stdout
// 터미널에 출력합니다.
});
인터페이스에서 메서드를 사용합니다.
question 메서드는 (질문, 콜백함수)로 이루어져 있습니다.
node.js를 실행하면 질문이 터미널에 출력되고, 터미널에 입력을 하면 입력한 데이터가 콜백의 매개변수로 전달됩니다.
rl.question('터미널에 출력될 질문을 입력하시오.', (터미널입력값) => {
console.log(`당신이 입력한 값은 ${터미널입력값} 입니다.`);
rl.close();
// rl.close()는 node.js를 종료합니다.
// rl.close()가 없다면 데이터를 입력후에도 종료되지 않고 터미널에 입력이 이어집니다.
// (단, 질문에 대한 답변은 없습니다.)
line
:입력 값을 받을 때 사용되는 이벤트입니다.
입력값은 콜백함수의 매개변수로 전달됩니다.
close
: 입력이 끝났을 때부터 실행되는 이벤트입니다.
rl.on('line', function (line) {
// 입력 값을 받을 때 사용하는 코드
// 입력 값을 1줄을 받을지 1줄 이상을 받을지와 같은 코드를 작성합니다.
rl.close();
// line 이벤트를 종료
})
rl.on('close',function(){
// 입력이 끝났을 때 사용하는 코드
// 입력 받은 값을 사용하는 코드를 작성합니다.
process.exit();
});
1 2 3
let input = [];
rl.on("line", (line)=>{
input = 문자열.split(' ').map(element => parseInt(element));
rl.close();
});
1
2
3
let input = [];
rl.on("line", (line)=>{
input.push(parseInt(line)));
});
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout
});
let input = [];
rl.on('line', (line) => {
// 한줄
// input = line.split(' ').map(elem => parseInt(elem));
rl.close();
// 여러줄
// input.push(line);
}).on('close',() => {
// console.log(input)
process.exit();
});