ECMAScript 모듈 [ node.js 교과서 ]
2023. 4. 10. 15:39ㆍnode.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 도 생략할 수 없다.
'node.js' 카테고리의 다른 글
__filename, __dirname [ node.js 교과서 ] (0) | 2023.04.10 |
---|---|
다이나믹임포트 [ node.js 교과서 ] (0) | 2023.04.10 |
캐싱 , require, 순환참조 [ node.js 교과서 ] (0) | 2023.04.10 |
this [ node.js 교과서 ] (0) | 2023.04.10 |
CommonJS 모듈 시스템 [ node.js 교과서 ] (0) | 2023.04.10 |