JavaScript

[javaScript] export와 export default의 차이점

prefer2 2021. 11. 30. 15:44

 

나도 모르게 export와 export default를 섞어 쓰고 있음을 발견했다. 이 둘의 차이를 명확하게 알아보면서 좀 더 일정한 코드 작성을 해보고자 한다.

 

export


export 문은 JavaScript 모듈에서 함수, 객체, 원시 값을 내보낼 때 사용한다. export 키워드는 선언문 앞에 사용한다.

// 변수의 export
export const name = 'Ann';

// 함수의 export
export function sayHello() {
    console.log('Hello World!');
}

// 클래스의 export
export class Person {
    constructor(name){
        this.name = name;
    }
}

 

선언문 앞에 매번 export 키워드를 붙이는 것이 번거롭다면 export할 대상을 하나의 객체로 구성하여 한 번에 export할 수 있다.

const name = 'Ann';

function sayHello() {
    console.log('Hello World!');
}

class Person {
    constructor(name){
        this.name = name;
    }
}

// 변수, 함수, 클래스를 하나의 객체로 구성하여 export
export {name, sayHello, Person};

 

import시 모듈이 export한 이름으로 import해야 한다.

import {name, sayHello, Person} from './test.js'

console.log(name);
sayHello();
console.log(new Person('Lee'));

 

모듈이 export한 식별자 이름을 일일이 지정하지 않고 하나의 이름으로 한 번에 import 할 수도 있다. 이때 import되는 식별자는 as 뒤에 지정한 이름의 객체에 프로퍼티로 할당된다

import * as test from './test.js'

console.log(test.name);
test.sayHello();
console.log(new test.Person('Lee'));

 

모듈이 export한 식별자 이름을 변경하여 import할 수도 있다.

import {name as myName, sayHello(), Person} from './test.js'

console.log(myName);
sayHello();
console.log(new Person('Lee'));

 

단, airbnb 컨벤션에 의하면 wildcard import(*)는 사용하지 말라고 한다.

// bad
import * as AirbnbStyleGuide from './AirbnbStyleGuide';

// good
import AirbnbStyleGuide from './AirbnbStyleGuide';

 

export default


모듈에서 하나의 값만 export한다면 default 키워드를 사용할 수 있다. default 키워드를 사용하는 경우 하나의 값을 export 한다

export defualt x => x*x;

 

단 default 키워드를 사용하는 경우, var, let, const 키워드는 사용할 수 없다.

export defualt cosnt square = (x) => x*x;
// SyntaxError

 

default 키워드와 함께 export한 경우 {}없이 임의의 이름으로import한다.

import square from './square.js'

console.log(square(2));

 

export VS export default


만약 하나의 값만을 export할 때 둘 중 무엇이든 사용할 수 있다. 하지만 일정한 코드를 지키기 위하여 airbnb 컨벤션을 참고해 보면 default를 붙이는 것을 추천한다고 한다.

// bad
export function foo() {}

// good
export default function foo() {}

하나의 값을 export할 때는 export default를, 여러 값을 export할 때는 export {} 객체 형식을 사용하면 될 것 같다.

 

참고


 

모던 자바스크립트 Deep Dive - 교보문고

자바스크립트의 기본 개념과 동작 원리 | 웹페이지의 단순한 보조 기능을 처리하기 위한 제한적인 용도로 태어난 자바스크립트는 과도하다고 느껴질 만큼 친절한 프로그래밍 언어입니다. 이러

www.kyobobook.co.kr

 

GitHub - airbnb/javascript: JavaScript Style Guide

JavaScript Style Guide. Contribute to airbnb/javascript development by creating an account on GitHub.

github.com

 

반응형

'JavaScript' 카테고리의 다른 글

[Javascript] Event  (0) 2022.03.20
웹팩(webpack) 알러지 치료하기 - 1  (0) 2022.02.27
[Javascript] Async, Await  (0) 2021.11.01
[Javascript] Promise  (0) 2021.10.27
[Javascript] Object.create  (0) 2021.10.25