Node.js 시스템 모듈

지헌·2024년 10월 21일
0

채용 공고를 보다보니 자격 요건에 Node.js 기반 서비스 개발 경험이 있는 분이라는 문구를 봤다.

내가 생각하는 node.js는 javascript를 이용한 Chrome V8 JavaScript 엔진이며, 대부분 npm 라이브러리를 이용해서 필요한 기능을 구현할 때만 사용했지 deep하게 들어가서 서버 개발 이런 분야는 생각도 못해봤다.

그래서 기초적인 시스템 모듈부터 알아볼려고한다.

모듈 시스템

모듈 시스템이란?

프로그래머가 모듈을 만들고 불러와서 사용할 수 있도록 도와주는 시스템이다.
그리고 역할로는 함수를 내보내주고 다른 모듈로부터 값을 가져오는 것이 자바스크립트의 모듈 시스템이다.

프론트엔드 기준으로 시스템 모듈은 두가지가 있다.

  1. Common JS 모듈 시스템(CJS)

  2. ES 모듈 시스템(ESM)

보통 React와 Next를 사용하면 ES 모듈을 많이 접할 것이다.

저도 CJS는 들어는 봤지 직접 작성해본 적이 없었습니다.

모듈 시스템 예시

1. CJS

CJS에서는 module 객체 안에 있는 exports라는 프로퍼티를 사용하여 값을 내보내고 require이라는 nodejs 내장 함수로 인수로 전달한 경로에서 내보내지는 값을 가져온다.

// math.js
function add(a, b) {
  return a + b;
}

function sub(a, b) {
  return a - b;
}

module.exports = {
  add,
  sub,
};
// index.js
const moduleData = require("./math");

// 구조분해할당도 가능
// const { add, sub } = require("./math");

console.log(add(1, 2));
console.log(sub(1, 2));
console.log(moduleData.add(1, 2));
console.log(moduleData.sub(1, 2));

2. ESM

// math.js
export function add(a, b) {
  return a + b;
}

export function sub(a, b) {
  return a - b;
}

// ESM은 내보낼 때 기본값을 내보낼 수 있다.

export default function multiply(a, b) {
  return a * b;
}
// index.js
import { add, sub } from "./math.js";
import multiply from "./math.js"; // 기본값 함수

// import mul, { add, sub } from "./math.js";


console.log(add(1, 2));
console.log(sub(1, 2));
console.log(multiply(100, 200));
profile
차곡차곡 그만 쌓아올리고 취업해서 부딪쳐보고 싶은

0개의 댓글