Frontend
[JavaScript] export default와 export의 차이
Daejlee
2024. 2. 17. 20:21
아래와 같은 코드가 있습니다.
// Profile.tsx
export default function Profile() {
...
}
// Card.tsx
const Card = ...;
const CardHeader = ...;
const CardFooter = ...;
const CardTitle = ...;
const CardDescription = ...;
const CardContent = ...;
export { Card, CardHeader, CardFooter,
CardTitle, CardDescription, CardContent }
Profile 컴포넌트를 export 할 때는 export default
를 사용하고, Card에 관련된 const들을 export 할 때는 export
를 사용하네요.
단순히 보면 파일에서 export 할 대상이 단일 대상이면 export default
, export 할 대상이 두 개 이상이 되면 export
를 사용하는 것 같습니다.
이유가 뭘까요? 단일 대상을 export 할 때도 export default
가 아닌 export
를 써도 상관 없지 않을까요?
import Profile from '@/components/Profile';
import { Card } from '@/components/utils/Card';
이와 관련해서 위와 같은 상황도 맞닥뜨립니다.
왜 Profile 컴포넌트는 중괄호 없이 import 할 수 있고, Card는 중괄호로 감싸야하는 걸까요?
이들이 구분된 이유와 적절한 사용 환경을 따져봅시다.
export
(유명 내보내기):
- 하나의 모듈에서 여러 값을 내보낼 수 있습니다.
- 내보낼 때, 중괄호
{}
를 사용하고 정확한 이름을 명시해야 합니다. - 모듈에 여러 함수, 컴포넌트 또는 변수가 있을 때 유용합니다.
// 예를 들어, MyModule.js 파일에서
export const MyComponent = () => {/* ... */};
export const anotherComponent = () => {/* ... */};
// 가져올 때
import { MyComponent, anotherComponent } from './MyModule';
export default
(기본 내보내기):
- 각 모듈은 하나의 기본 내보내기만 가질 수 있습니다.
- 기본 내보내기를 가져올 때는 중괄호를 사용하지 않고 원하는 이름으로 지정할 수 있습니다.
- 모듈이 하나의 주요 기능을 중심으로 할 때 유용합니다.
// 예를 들어, MyDefaultModule.js 파일에서
const MyComponent = () => {/* ... */};
export default MyComponent;
// 가져올 때
import AnyNameYouWant from './MyDefaultModule';
export - JavaScript | MDN
export 문은 JavaScript 모듈에서 함수, 객체, 원시 값을 내보낼 때 사용합니다. 내보낸 값은 다른 프로그램에서 import 문으로 가져가 사용할 수 있습니다.
developer.mozilla.org