JavaScript / Node.js 입출력 처리하기
JavaScript / Node.js 입출력 처리하기
Input & Output… |
본 포스팅에서는 Node.js에서 데이터 및 파일 입출력을 처리 하는 방법을 알아본다.
JavaScript로 PS 등을 하는 경우에도 참고하여 이용
출력
출력의 경우, 기본적으로 console.log를 이용한다.
methods of console
console.log 이외에, info, warning, debug, error 등을 활용할 수 있다.
console.log("msg":);
console.info("info");
console.warn("warning");
console.debug("debug");
console.error("error");
chrome에서 console.debug로 출력한 내용이 나오지 않을 수 있는데, 콘솔 출력 옵션을 확인해주어야 한다.
console.log(document);
console.dir(document);
console.log의 경우 HTML 형식의 Tree 구조로 출력하고, console.dir의 경우 JSON 형식의 Tree 구조로 출력한다.
console.group("personal infomation");
console.log("name is caesar.");
console.log("age is 30.");
console.groupEnd();
console.group을 활용하여, 여러 console.log를 묶어서 출력할 수 있다.
const userStatusArray = ["caesar", 30];
const userStatusObject = { name: "caesar", age: 30 };
console.table(userStatusArray);
console.table(userStatusObject);
Array나 Oject 타입을 console.table로 출력할 수 있다.
console.count("DO NOT CLICK THIS BUTTON");
console.count("DO NOT CLICK THIS BUTTON");
console.count("DO NOT CLICK THIS BUTTON");
console.count("DO NOT CLICK THIS BUTTON");
console.countReset("DO NOT CLICK THIS BUTTON");
console.count로 호출된 횟수를 출력하고, console.countReset으로 초기화 할 수 있다.
console.time("timer");
let someDifficultCalculation = 0;
for (let i = 0; i < 500; i++) {
someDifficultCalculation++;
}
console.timeEnd("timer");
console.time 및 console.timeEnd를 활용하여, 코드가 연산 되는데에 소요되는 시간을 측정할 수 있다.
console.log examples
const name = "caesar";
const age = 30;
console.log(name, age);
console.log("%s is %d years old.", name, age);
console.log(`${name} is ${age} years old.`);
style on console.log
console.log(
"%cFont Colour and Font Size are changed.",
"color: lime; font-size: 20px;"
);
console.log("%cYin %cand %cYang", "color: red", "color: black", "color: blue");
입력
PS의 경우
// 입력값이 한 줄일 경우
let input = require('fs').readFileSync(filePath).toString().trim();
// 입력값이 여러 줄일 경우
let input = require('fs').readFileSync(filePath).toString().trim().split(' ');
readline
readline module은 Node.js의 기본 내장 모듈이다.
readline / 한 줄 입력받기
const readline = require("readline");
const rl = readline.createInterface({
input: process.stdin,
output: process.stdout,
});
rl.on("line", (line) => {
// 한 줄 입력 후 실행 되는 영역
console.log("you typed:", line);
rl.close(); // close를 표기하지 않으면 무한히 입력 받음
});
rl.on("close", () => {
// 입력 종료시 실행 됨
process.exit();
});
fs
fs는 File System의 약자로, 마찬가지로 Node.js의 기본 내장 모듈이다
fs / readFile()
fs.readFile(filename, [options], callback);
파일을 asynchronous (비동기적)으로 읽는다.
fs / readFileSync()
fs.readFileSync(filename, [options]);
readFile()과는 달리, 파일을 synchronous (동기적)으로 읽는다.
✔️ process.stdin
async function userEnterInputForExecutionOnError() {
while (true) {
try {
console.log("execute instructions here");
throw "intentional error";
} catch (error) {
console.log("Press enter to try again...");
await new Promise(function (resolve, reject) {
process.stdin.resume();
process.stdin.once("data", function (data) {
process.stdin.pause();
resolve();
});
});
}
}
}
userEnterInputForExecutionOnError();
반복적인 비동기적 요청 등을 할 때, 오류가 발생했을 때 터미널을 통해 해당 요청을 다시 시도할 것인의 여부를 enter 입력을 통해 받아들이는 코드 예제
Promise 객체와 process.stdin을 활용하였다.
process.stdin에 관한 자세한 명세 파악 확인 필요