ECMAScript 모듈 [ node.js 교과서 ]

2023. 4. 10. 15:39node.js

본 게시글은 node.js 교과서 강의를 듣고 정리한 글입니다.

 

- 공식적인 자바스크립트 모듈 형식이다. 노드에서 아직까지는 CommonJS 모듈을 많이 쓰긴 하지만 , ES 모듈이 표준으로 정해지면서 ES 모듈이 표준으로 정해지면서 점점 ES 모듈을 사용하는 비율이 늘어나고 있다.

- 브라우저에서도 ES 모듈을 사용할 수 있어 브라우저와 노드 모두에게 같은 모듈 형식을 사용할 수 있다는 것이 장점

- 확장자가 mjs 이다.

// var.mjs

export const odd = "홀수입니다.";
export const even = "짝수입니다.";

// exports.odd = odd;
// exports.even = even;

// module.exports = {
//   odd,
//   even,
// };
// func.mjs

import { odd, even } from "./var.mjs";
//const { odd, even } = require("./var.mjs");

function checkOddOrEven(num) {
  if (num % 2) {
    return odd;
  }
  return even;
}

export default checkOddOrEven;
//module.exports = checkOddOrEven;
// index.mjs

import { odd, even } from "./var.mjs";
import checkNumber from "./func.mjs";

// const { odd, even } = require("./var.mjs");
// const checkNumber = require("./func.mjs");

function checkStringOddOrEven(str) {
  if (str.length % 2) {
    return odd;
  }
  return even;
}

console.log(checkNumber(10));
console.log(checkStringOddOrEven("hello"));

- 선언하면서 바로 내보낼 수 있다.

- 정확한 동작은 조금 다르다.

- 콘솔에서 실행할 때 확장자를 꼭 붙여야 한다. 안붙이면 js 를 찾기 때문

- js 확장자에서 import 를 사용하면 SyntaxError 가 발생한다.

- mjs 확장자 대신 js 확장자를 사용하려면 package.json 파일에 "type":"module" 속성을 넣으면 된다.

- CommonJS 묘듈과는 다르게 import 시 파일 경로에서 js, mjs 같은 확장자는 생략할 수 없다. 또한 폴더 내부에서 index.js 도 생략할 수 없다.