이 영역을 누르면 첫 페이지로 이동
Nuhends 의 Tech Life 블로그의 첫 페이지로 이동

Nuhends 의 Tech Life

페이지 맨 위로 올라가기

Nuhends 의 Tech Life

IT / Tech / 재테크 관련 뉴스를 최대한 알기 쉽게 전달하는 Tech 블로그 입니다.

[JS] 모듈 import/export 문법 빠르게 정리하기

  • 2021.09.18 02:46
  • 프로그래밍/JAVASCRIPT 사전
반응형

[JS] 모듈 import/export 문법 빠르게 정리하기

import/export 문법 빠르게 정리하기


 

자바스크립트의 import, export 사용법 빠르게 정리해보겠습니다.

 

export 문은 JavaScript 모듈에서 변수, 함수, 클래스를 내보낼 때 사용

다른 파일에서 내보낸 값을 import 문으로 가져올 수 있음

 

export 사용법

변수, 함수, 클래스 선언할 때, 앞에 export 를 붙이면 내보내기 가능

 

📌 주의
대부분의 자바스크립트 style guide에서 클래스, 함수 선언부 앞에 export를 붙여 내보내기 시에,
선언 끝에 세미콜론 붙이지 말라고 권유

 

export문 bad/good 케이스

 

import 사용법

항목별로 불러오고 싶다면 import { ... } 

 

 

불러올 항목이 많다면 import * as <obj>

 

 

📌 주의

import할 모듈이 모두 사용할 경우가 아니라면, 사용할 항목만 불러오는게 좋음

import문 bad/good 케이스

 

why?

웹팩과 같은 빌드 툴은 로딩속도를 높이기 위해

모듈들을 모으는 번들링과 사용하지 않는 리소스를 삭제하는 최적화 작업을 수행(tree-shaking 과정)

 

이 과정에서 필요한 항목만 import시 빌드 속도 향상에 도움이 됨

 

import 'as'

as 를 사용하면 이름을 바꿔서 가져올 수 있음

 

// 📁 main.js
import {sayHi as hi, sayBye as bye} from './say.js';

hi('John'); // Hello, John!
bye('John'); // Bye, John!

export 'as'

export 에도 as 사용 가능

// 📁 say.js
...
export {sayHi as hi, sayBye as bye};

 

// 📁 main.js
import * as say from './say.js';

say.hi('John'); // Hello, John!
say.bye('John'); // Bye, John!

 

export default

내보낼 개체가 한개인 경우(리엑트의 컴포넌트 클래스, 함수)

export default 를 사용하여 '해당 모듈엔 개체가 하나만 있다' 는 사실을 명확하게 나타낼 수 있음

 

// 📁 user.js
export default class User { // export 옆에 'default'를 추가
  constructor(name) {
    this.name = name;
  }
}

 

// 📁 main.js
import User from './user.js'; // { User }가 아닌 User로 클래스를 가져옴

new User('John');

 

default export vs named export

 

파일당 최대 하나의 export default 가 있을 수 있으므로 내보낼 개체엔 이름이 없어도 무관

 

// 클래스 이름이 없음
export default class { 
  constructor() { ... }
}

// 함수 이름이 없음
export default function(user) { 
  alert(`Hello, ${user}!`);
}

// 이름 없이 배열 형태의 값을 내보냄
export default ['Jan', 'Feb', 'Mar','Apr', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'];

 

하지만 그냥 export의 경우, 개체에 이름이 없을 경우 에러 발생

export class { // 에러! (default export가 아닌 경우엔 이름이 꼭 필요합니다.)
  constructor() {}
}

 

'default' name

함수를 내보낼 때 선언부와 떨어진 곳에서 default 키워드를 사용해도 동일한 효과

function sayHi(user) {
  alert(`Hello, ${user}!`);
}

// 함수 선언부 앞에 'export default'를 붙여준 것과 동일합니다.
export { sayHi as default };

 

default export와 named export가 섞여 있을 경우

// 📁 user.js
export default class User {
  constructor(name) {
    this.name = name;
  }
}

export function sayHi(user) {
  alert(`Hello, ${user}!`);
}

 

아래와 같은 방식을 사용하면 default export와 named export를 동시에 가져올 수 있음

 

방식 1:

// 📁 main.js
import {default as User, sayHi} from './user.js';

new User('John');

 

방식 2:

// 📁 main.js
import * as user from './user.js';

let User = user.default; // default export
new User('John');

 

default export 의 이름 관련 규칙

1. named export: export시 이름과 import시 이름이 같아야 함

import { User } from './user.js';
// import { MyUser }은 사용 X → 반드시 { User }

 

2. default export : import시 개발자가 원하는 이름 지정 가능

import User from './user.js'; // 동작
import Apple from './user.js'; // 동작
// 어떤 이름이든 에러 없이 동작
반응형
저작자표시 비영리 변경금지 (새창열림)

'프로그래밍 > JAVASCRIPT 사전' 카테고리의 다른 글

[JS] 객체에 조건부 프로퍼티 적용하기  (0) 2022.06.05
[JS] 호이스팅(Hoisting)을 이해해보자!  (3) 2022.01.13
[JS] scope 와 실행 컨텍스트  (0) 2021.06.11
[JS] this란? 모든 케이스를 정리해보자  (0) 2021.06.08
[JS] 화살표 함수, 쉽고 빠르게 정리하기  (8) 2021.05.11

댓글

이 글 공유하기

  • 구독하기

    구독하기

  • 카카오톡

    카카오톡

  • 라인

    라인

  • 트위터

    트위터

  • Facebook

    Facebook

  • 카카오스토리

    카카오스토리

  • 밴드

    밴드

  • 네이버 블로그

    네이버 블로그

  • Pocket

    Pocket

  • Evernote

    Evernote

다른 글

  • [JS] 객체에 조건부 프로퍼티 적용하기

    [JS] 객체에 조건부 프로퍼티 적용하기

    2022.06.05
  • [JS] 호이스팅(Hoisting)을 이해해보자!

    [JS] 호이스팅(Hoisting)을 이해해보자!

    2022.01.13
  • [JS] scope 와 실행 컨텍스트

    [JS] scope 와 실행 컨텍스트

    2021.06.11
  • [JS] this란? 모든 케이스를 정리해보자

    [JS] this란? 모든 케이스를 정리해보자

    2021.06.08
다른 글 더 둘러보기

정보

Nuhends 의 Tech Life 블로그의 첫 페이지로 이동

Nuhends 의 Tech Life

  • Nuhends 의 Tech Life의 첫 페이지로 이동
반응형

검색

메뉴

  • 홈
  • 웹 개발
  • 경제 데이터
  • 경제 공부
  • 방명록

카테고리

  • 분류 전체보기 (127)
    • 프로그래밍 (69)
      • React (3)
      • HTML&CSS 사전 (13)
      • JAVASCRIPT 사전 (11)
      • Algorithm (23)
      • 이슈 정리 (2)
      • 개발 환경 (4)
      • NodeJS (1)
      • Typescript (4)
      • NextJS (5)
      • React-Query (2)
      • 인프라 (0)
      • ai (1)
    • 경제 데이터 (22)
      • 주식 순위 (20)
      • 경제지표 (2)
    • 경제 공부 (25)
      • 경제 신문 읽기 (3)
      • 세금 재테크 (7)
      • 인사이트 (4)
      • 경제용어정리 (9)
      • 정부 지원 제도 관련 (2)
    • 팁 모음 (11)
      • 인터넷 (5)
      • 생활 (3)
      • SNS 맛집 (3)

최근 글

인기 글

댓글

공지사항

아카이브

태그

  • 프로그래머스
  • 알고리즘
  • 코테 풀이
  • 코테
  • 코딩테스트
  • softeer
  • javascript
  • 자바스크립트

나의 외부 링크

정보

nuhends의 Nuhends 의 Tech Life

Nuhends 의 Tech Life

nuhends

블로그 구독하기

  • 구독하기
  • RSS 피드

방문자

  • 전체 방문자
  • 오늘
  • 어제

티스토리

  • 티스토리 홈
  • 이 블로그 관리하기
  • 글쓰기
Powered by Tistory / Kakao. © nuhends. Designed by Fraccino.

티스토리툴바