서버 인프라, 백엔드/Nodejs, PM2

nodejs의 모듈 시스템 : export, import

번데기 개발자 2018. 9. 27. 18:42
반응형
모듈 시스템


자바스크립트는 예전부터 리소스 관리가 어려운 문제가 있었습니다. 

리소스는 웹페이지를 구성하는 자원들인데 현재 웹에서는 해당 페이지에 필요한 모든 파일을 불러 와야 하고 그 파일들이 곂치지 않는지 잘 살펴봐야 합니다.

하지만 npm 과 같은 패키지 관리 툴을 사용하여 여러 자바스크립트 라이브러리들을 개발자들이 쉽게 사용할 수 있도록 구현하였고, 자신이 구현한 자바스크립트의 리소스들도 쉽게 다른 파일에서 사용할 수 있게 관리 할 수 있습니다.



기존의 모듈 시스템 require

require React from 'react';

require from 'react-dom'

과 같은 형태로 이용이 가능합니다.


모듈 시스템 import

import React from ‘react’; 

Import from ‘react-dom’


둘다 해당 패키지에서 변수를 가져오는 작업을 수행하지만 {} 로 둘러쌓인 부분이 있는데 이는 export시의 차이입니다.

* 참조 : 하지만 아직 nodejs에서는 es2015 모듈시스템을 지원하지는 않습니다.


import BookList from '../containers/book-list'


위처럼 경로가 나오게 되면 사용자가 지정한 리소스를 import하라는 뜻이며, 경로가 나오지 않는다면 npm 안에있는 라이브러리를 사용하라는 뜻입니다.


모듈 시스템 export 방식

자바 스크립트의 export방식에는 3가지가 있습니다.


Example.js

const a = 1;
const b = 2;
export { a };
export const c = 3;
export default b;

Example2.js

import d, { a, c as e } from './Example’;
console.log(a, d, e); // 1, 2, 3




a : a는 객체에 담아서 export합니다.

c: c는 선언 및 초기화와 동시에 export합니다.

b: b는 default를 붙여줘서 export합니다.



->     a,c괄호 안에서 불러오고 d 괄호 없이 불러오고 c는 as e라고 적혀있습니다.
       
        여기서 default는 기본이라는 뜻입니다. default로 export한 b는 괄호를 사용하지 않아도 export할 수 있습니다. 
        변수 d가 변수 b를 import한 것 이라는 것을 알 수 있습니다.

        괄호 안의 변수를 바꾸고 싶다면 as라는 키워드를 사용하여 바꿀 수 있습니다. 
        위의 c as e라고 한 부분은 변수 c의 값을 변수 e로 넘겨줍니다.
        이것은 두개이상의 패키지에서 같은 변수이름을 사용해 변수가 곂칠때 유용합니다.

        










반응형