[javascript] import & export
import와 export는 javascript module을 내보내고 가져오는 기능이다.
Module
module은 별도의 파일로 분리하여 관리하는 코드를 말한다. 일반적으로 기능별로 파일을 분리하여 관리하며 이로 인해 코드의 가독성이 좋아지고, 재사용 및 유지보수에 용이하다는 장점이 있다.
코드가 module로서 정상적으로 작동하려면 독립적인 스코프를 가져야한다. 이는 module이 import한 파일의 동작에 의도하지 않은 영향을 미치는 일을 방지한다. 문제의 예로는 변수명, 함수명의 중복사용 등이 있다.
Import & Export
-
Import
외부 파일로부터 모듈을 가져올 때 사용한다.
import { 모듈이름 } from '파일경로' import { 모듈이름1, 모듈이름2... } from '파일경로'
위와 같이 하나의 파일에서 단수 혹은 다수의 모듈을 가져올 수 있다.
import { 원래의모듈이름 as 변경할모듈이름 } from '파일경로'
모듈의 이름을 다르게 가져올 수 있다.
import * as 가져올이름 from '파일경로' 가져올이름.모듈명()
다수의 모듈을 한번에 가져오길 원할 때 사용한다.
-
export ( named export )
작성한 함수/변수/클래스를 모듈로 내보낸다.
export { 함수명 } export { 함수명1, 함수명2, 변수명1 as 모듈명 } export function 함수명() { } export const 함수명 = () => { }
단수 혹은 다수의 모듈을 내보낼 수 있고, aliasing (
as
)을 통해 실제 함수명과 내보낼 모듈명을 다르게 설정할 수 있다.export와 선언을 같이 작성할 수도 있다.
-
export default ( default export )
일반적으로 파일에 모듈이 하나 뿐일 때 설정한다. import 시 중괄호
{}
사용을 생략할 수 있고 모듈이름을 다르게 사용해도 가져오는데에 문제가 없다.export default 함수명 export { 함수명 as default} // 두가지 export 모두 동일한 결과 import 가져올이름 from '파일경로'
export와 선언을 함께 할 때 식별자를 설정하지 않아도 된다.
export default function() { } export default 'String value'
찾아보았던 문서에서는 default export 사용을 지양하라는 의견도 있었다.
import 시 임의의 이름으로 정할 수 있어 가독성이 떨어지고 IDE에서 모듈이름을 읽어오지 못해 사용상의 불편함도 있다고 한다.
참조
- https://nuhends.tistory.com/80