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 등이 있음
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 서버개발 강의를 바탕으로 작성된 내용입니다.