Facts

Component개발을 하는 과정에서 exportexport default를 사용하는 데, 상황에 따라 어떤 것을 써야 하는지 의문이 들었음.


Feelings

그래서 개발하면서 아무 생각없이 개발하고 있는 내 자신을 보면서, 올 해에는 이렇게 개발하면 안되겠다는 생각을 하게 됨.

즉, 의식적 노력을 동반한 개발을 해야겠다고 생각함.


Findings

export

  • 한 파일 내에서 여러 변수들을 export하는 것이 가능
  • import할 때에는 export할때 사용된 변수명을 동일하게 설정해야한다.
  • 다른 이름으로 alias할때에는 as를 사용한다

export default

  • import 하는 곳에서 자유자재로 이름을 붙여 줄 수 있기 때문에, 위험
  • 밑에 처럼 거대한 객체를 내보낼 때, 웹팩에서 tree-shaking이 안됨 즉, 웹팩 입장에서는 다 사용하는 줄 알고 다 번들링 진행(메모리 낭비)

    export default {
      propertyA: "A",
      propertyB: "B",
    }
  • export default도 웹팩의 sideEffect: false 옵션을 통해, tree-shaking을 해줄 수 있다.

    • sideEffect:사용하지는 않지만 번들에 포함되는 코드들
    • 직접적으로 사용하진 않지만, 다른 코드에 영향을 끼칠 수 있다고 판단되면 sideEffect가 발생했다고 한다. 이를 false로 표시해준다는 건, package와 dependency들이 sideEffect를 일으키지 않는다고 알려주는 것.

참고