1. require / import
const custom_module = require('custom_module');
import custom_module from 'custom_module';
위 두 줄의 코드는 기본적으로 custom_module 이라는 모듈을 불러오는 동일한 동작을 수행합니다.
require / exports 는 기존까지 Node.js 에서 사용되던 방식으로, module.exports 객체에 모듈 전체를 치환해 내보내고, requre 를 통해 해당 모듈을 불러오는 방식입니다.
모듈 전체를 치환해 내보내기 때문에 불필요한 모듈이 로드되기도 하고 모듈 내에서 어떤 부분을 사용했는지 확인할 수 없는 단점이 있었습니다.
ES6 부터는 import / export 라는 방식으로 모듈을 불러오고 내보냅니다.
import {name} from 'module';
ES 모듈의 import 는 require 와는 다르게 모듈내에 정의된 특정한 부분만을 불러올 수 있습니다.
import defaultExport from "module-name";
import * as name from "module-name";
import { export1 } from "module-name";
import { export1 as alias1 } from "module-name";
import { export1 , export2 } from "module-name";
import { foo , bar } from "module-name/path/to/specific/un-exported/file";
import { export1 , export2 as alias2 , [...] } from "module-name";
import defaultExport, { export1 [ , [...] ] } from "module-name";
import defaultExport, * as name from "module-name";
import "module-name";
var promise = import("module-name");
표현 | 설명 |
defaultExport | 모듈에서 가져온 기본 내보내기를 가리킬 이름입니다. |
module-name | 가져올 대상 모듈. 보통, 모듈을 담은 .js 파일로의 절대 또는 상대 경로입니다. 번들러에 따라 확장자를 허용하거나, 필요로 할 수도 있으므로 작업 환경을 확인하세요. 따옴표와 쌍따옴표 문자열만 사용 가능합니다. |
name | 가져온 대상에 접근할 때 일종의 이름공간으로 사용할, 모듈 객체의 이름입니다. |
exportN | 내보낸 대상 중 가져올 것의 이름입니다. |
aliasN | 가져온 유명 내보내기를 가리킬 이름입니다. |
2. exports / export
const myFunction = function() {
return true;
}
exports.myFunction = myFunction;
export function myFunction() { ... };
위 두 줄의 코드는 모두 내보내기를 수행합니다.
exports 는 node.js 에서 기본적으로 제공하는 내보내기 방식입니다.
ES6 의 export 를 사용하여 모듈을 내보내기 합니다.
export 에서 내보내는 모듈은 use strice 의 존재 유무와 상관없이 무조건 엄격 모드입니다.
export 문은 html 안에 작성한 스크립트는 사용할 수 없습니다.
// 하나씩 내보내기
export let name1, name2, …, nameN; // var, const도 동일
export let name1 = …, name2 = …, …, nameN; // var, const도 동일
export function functionName(){...}
export class ClassName {...}
// 목록으로 내보내기
export { name1, name2, …, nameN };
// 내보내면서 이름 바꾸기
export { variable1 as name1, variable2 as name2, …, nameN };
// 비구조화로 내보내기
export const { name1, name2: bar } = o;
// 기본 내보내기
export default expression;
export default function (…) { … } // also class, function*
export default function name1(…) { … } // also class, function*
export { name1 as default, … };
// 모듈 조합
export * from …; // does not set the default export
export * as name1 from …;
export { name1, name2, …, nameN } from …;
export { import1 as name1, import2 as name2, …, nameN } from …;
export { default } from …;
표현 | 설명 |
nameN | 내보낼 식별자 이름. import를 사용해 다른 스크립트에서 가져갈 수 있습니다. |
내보내기에는 유명(named)과 기본(default) 두 종류가 존재합니다.
모듈 하나에서 유명 내보내기는 여러 개 존재할 수 있지만 기본 내보내기는 하나만 가능합니다.
// 유명(named) 내보내기
// 먼저 선언한 식별자 내보내기
export { myFunction, myVariable };
// 각각의 식별자 내보내기
// (변수, 상수, 함수, 클래스)
export let myVariable = Math.sqrt(2);
export function myFunction() { ... };
// 기본 내보내기
// 먼저 선언한 식별자 내보내기
export { myFunction as default };
// 각각의 식별자 내보내기
export default function () { ... };
export default class { ... }
3. Node.js 프로젝트에서 imprt / export 사용
13 버전 이상의 Node.js 에서 ES 모듈을 사용하는 방법은 간단합니다.
npm init 을 통해 프로젝트를 생성한 후 package.json 을 열고 type 을 module 로 설정해주면 됩니다.
// package.json
{
...
type: 'module'
...
}
'개발 > Node.js' 카테고리의 다른 글
Electron JS (2) | 2022.01.23 |
---|---|
[Node.js] Node.js 기본 명령어 (0) | 2021.01.23 |
[Node.js] Node.js 시작하기 (0) | 2021.01.19 |
[Nodejs] 윈도우 10 node.js 설치 (0) | 2021.01.08 |
댓글