Node.js 기본 모듈, 전역 객체 알아보기

Node.js 스터디 자료 기초 내용 - 2장 기본 모듈, 전역 객체

Node.js 기본 모듈, 전역 객체 알아보기
💡
기본 모듈
별도의 설치과정 없이 사용 할 수 있는 모듈로 Node.js와 함께 설치된다.

프로세스 환경 기본 모듈

  • os
  • process
  • cluster

파일과 경로 URL 관련 기본모듈

  • fs
  • stream
  • path
  • URL
  • queryStream

네트워크 관련 기본모듈

  • http/https
  • net
  • dgram
  • dns
💡
전역객체
Global context에 속하는 객체와 함수로 모듈로딩 과정없이 사용할 수 있다.
Timer, console, __dirname, __filename, os, process 등이 있음

console

  • 콘솔화면에 내용출력 실행시간 체크등의 기능을 가진 전역객체
//아래의 차이점을 잘기억하자 + 연산은 문자열로 캐스팅되어 출력됨
//문자열 출력이 의도가 아니라면 ,를 사용하여 출력

const num = 3;
console.log("num : " + num);
console.log("num : ", intValue);

const account = {
    name : "Taewoong",
    age : "24"
};

console.log("account : " + account);
console.log("account : ", account);
const output = fs.createWriteStream('./stdout.log');
const errorOutput = fs.createWriteStream('./stderr.log');
// Custom simple logger
const logger = new Console({ stdout: output, stderr: errorOutput });
// use it like console
const count = 5;
logger.log('count: %d', count);
// In stdout.log: count 5

파일 기반로그 메시지 남기기

//시작시점 console.time(TIMER_NAME);
//종료시점 console.timeend(TIMER_NAME);
console.time("SUM");
let sum = 0;
let count = 0;
for (var i = 1; i <= 1000; i++) {
    sum += i;
    count++;
}
console.log(count);
console.log(sum);
console.timeEnd("SUM");

console.time 사용예제

Timer

  • 타이머 함수인 setTimeout() 이나 setInterval() 함수를 이용해서 일정 시간 뒤에
    동작하거나 , 주기적으로 동작하는 기능을 작성할 수 있다.
  • 간단한 예제보기 브라우저에서의 대표적인 비동기처리함수인 setTimeout과 setInterval과 같기때문에 간단하게 다룸
//setTimeout 일정시간 이후에 함수 실행 (비동기)
function sayHello(str1, str2){
    console.log("hello World", str1 , str2);
}
//바로 실행
sayHello("hello", "world");
//3초뒤 실행과 인수 전달가능
setTimeout(sayHello, 3000 , "hello", "world"); 

//setInterval 일정시간마다 반복해서 실행(비동기)
setInterval(sayHello, 1000, "hello", "world");
//js의 대표적인 비동기처리 함수임

process

  • 애플리케이션 실행환경과 관련된 정보를 가지고있는 전역객체
console.log(process.env); // 애플리케이션 실행환경변수를 담고있는 객체
console.log(process.version); // Node.js 의 버전 반환
console.log(process.platform); //cpu와 플랫폼 정보
console.log(process.argv); // 실행명령 파라미터
//그외에도 process.nextTick() 등 다양한것들이 존재한다.

기초 속성

process.on("exit",function(){
    //프로그램 exit이벤트
    console.log("exit 수행됨");
});
process.on("beforeExit",function(){
    //프로그램 exit 전 실행 이벤트
    console.log("exit 수행전이다.");
});
process.on("uncaughtException",function(){
    /*
    예외처리되지 않은 예외이벤트 왠만하면 사용을 권장하지않음 이게 실행되는건 프로세스 종료를 의미함.
    */
    console.log("uncaughtException 예외처리되지않은 에러 잡힘");
});

Event API 예제

process.nextTick(function(){
  //이벤트 루프내에 동작을 모두 실행 후 실행되는 함수
  //setTimeout(fn,0)과 동작 방식 비슷
  console.log("process nextTick 실행 !");
});
process.exit(); // 애플리케이션의 종료

function API 예제

util

  • 형식 문자열을 작성 할 수 있음
const util = require("node:util");

//util 포맷 알아보기 c언어 printf와 비슷
const str1 = util.format("%d + %d = %d", 1,2, (1+2));
console.log(str1);

const str2 = util.format("%s %s", "hello","world");
console.log(str2);



간단한 예제보기

EventEmitter

  • EventEmitter는 사용자정의 이벤트를 다루는 객체로 이벤트 기반
    그리고 상속을 이용해서 사용자 정의의 클래스유형에도 이벤트를
    다룰 수 있다.
const EventEmitter = require('node:events');

const emitter = new EventEmitter();

emitter.once("newEvent" , () => {}); // 최초에 한번만 실행되는 이벤트 등록
emitter.on("newEvent" , () => {}); // 이벤트 등록 addEventListener의 별칭
emitter.off("newEvent" , () => {}); // 이벤트 등록 removeEventListener의 별칭
// 두번째로 받는 콜백함수의 인자는 함수의 참조를 가지고 있어야 제대로 동작한다

emitter.emit("newEvent", 0); //이벤트 발생

// 이벤트 핸들러 개수관련 기본 최대 개수는 10개
emitter.setMaxListeners( number )// 최대 갯수 설정
emitter.getMaxListeners(); //최대 갯수 반환

기본 호출방법

const EventEmitter = require('node:events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();
myEmitter.on('event', () => {
  console.log('an event occurred!');
});
myEmitter.emit('event');

클래스를 통해서 상속받아서 사용


  • 기초 내용이외에 다양한 API가 존재합니다 자세한 내용에 대해서는 공식문서를 항상 참고하도록 하는 습관이 좋습니다.
  • 위 포스팅은 T아카데미 Nodejs 서버개발 강의를 바탕으로 작성된 내용입니다.