[JS] 모듈 내보내기 / 불러오기

hyeondoonge·2021년 7월 24일
0

ES5

내보내기

userService.js

module.exports = { getUser, setUser, ... }
exports.getUser = getUser;
exports.setUser = setUser;

exports는 module.exports를 참조하는 객체이다.
따라서 두 문법은 공통적으로 내보낼 때 사용하며,
module.exports에 할당할 땐 object를 생성해 전달하고
exports에 할당할 땐 key, value를 설정해 전달한다.

Node.js: exports vs module.exports 여기 차이점에 대해 더 자세하게 파헤친 글이 있다 :)

불러오기

const userService = require('./userService.js');
// or
const { setUser, getUser } = require('./userService.js');

require에 모듈명을 명시하여 가져올 수 있으며,
module.exports object를 반환한다.

만약, 상대경로를 지정하지 않으면 default로 node_modules 디렉토리에서 모듈을 찾아낸다.

ES6

내보내기

my-module.js

export default mainModule;
export { subModule1, subModule2 };

export문법을 사용한다.
default export를 사용하면 object로서 전달하지 않아도 된다.
단, 이 구문은 한 모듈내에서 한 번만 사용할 수 있다.

추가적으로 export는 아래와 같이도 쓸 수 있다.

export default function mainModule { 
// ...
};

export const subModule1 = () => {
//... 
};

불러오기

import mainModule, { subModule1, subModule2 } from './my-module.js';

mainModule은 default로 export되었기에 변수로 받을 수 있으며, 변수명은 다르게 지정할 수도 있다.

import mainModule, * as myModules from './my-module.js';

* 와 as를 같이 사용해서 myModules라는 namespace를 만들어낼 수 있다.


es버전에 따른 모듈 내보내기 / 불러오기 문법에 대해 알아보았다.
es6문법에서는 위 export예시처럼 export할 값들을 나열식으로 작성하지 않아도 된다.
또, as를 이용해 멤버들에 새 이름을 줄 수도 있다.
편의를 위한 문법이 제공되어있어 좋은 것 같다. 👏🏻

0개의 댓글