티스토리 뷰

node

Node.js Module System

turfrain 2023. 3. 28. 15:17

CommonJS(CJS) vs ECMAScript Modules(ESM)

node js 의 모듈 시스템
- es5 의 모듈 시스템 (CJS) 확장자를 "*.cjs"로 사용하면 (CJS)로인식
- es6 의 모듈 시스템(ESM) 확장자를 "*.mjs"로 사용하면 (ESM)로 인식
or
- package.json 에서 {type:"commonjs"} 선언시 (CJS)로 인식
- package.json 에서 {type:"module"} 선언시 (ESM)로 인식
or
- 기본적으로 "*.js" 파일을 사용하지만 위처럼 강제할 수 있음. 

 

CommonJS 

- cjs 모듈 확장자(.cjs)

- moduleES5CommonJS.cjs

const sum = ($a, $b) => {
  return ($a+$b);
}
const sub = ($a, $b) => {
  return ($a*$b);
}

function sayHi(user) {
  console.log(`hi, ${user}!`);
}

exports.sum   = sum; 
exports.sub   = sub; 
exports.sayHi = sayHi;

- es5.cjs

const es5 = require("./moduleES5CommonJS.js");

console.log(es5.sum(4,5))
console.log(es5.sub(4,5))
console.log(es5.sayHi("DJ"))

/* 
실행 : node es5.js
*/

 

ECMAScript Modules

- moduleES6.mjs

const sum = ($a, $b) => {
  return ($a+$b);
}
const sub = ($a, $b) => {
  return ($a*$b);
}

export function sayHi(user) {
  console.log(`Hello, ${user}!`);
}

export {sum, sub};

- es6.mjs

import {sum, sub, sayHi} from "./moduleES6.js";

console.log(sum(4,5));
console.log(sub(4,5));
console.log(sayHi("dj"));

/* 
설치  npm i -D @babel/core
설치  npm i -D @babel/cli 
설치  npm i -D @babel/preset-env 
win   npm i -D @babel/node
실행  npx babel-node es6.js  
*/

'node' 카테고리의 다른 글

html 템플릿 엔진 (ejs, gulp-file-include)  (0) 2022.03.24
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday