0Pricing
Frontend Academy · 강의

모듈: import와 export

이름 있는 export와 기본 export를 사용해 코드를 ES 모듈로 나누고, 필요한 항목만 import하며, 모듈 번들러가 의존성 그래프를 해석하는 방식을 이해합니다.

모듈: import와 export은(는) CoddyKit의 무료 Frontend Academy 강의입니다. 이것은 4개 중 4번째 강의입니다. 아래에서 전체 강의를 무료로 읽을 수 있으며, 내장 코드 에디터와 24/7 AI 튜터와 함께 브라우저에서 직접 실습할 수 있습니다. 이 강의는 Frontend Academy 학습 경로의 일부이며, 진행 상황이 웹과 CoddyKit 앱에 동기화됩니다. Frontend Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

모듈을 사용하는 이유

모듈이 없던 시절에는 모든 JavaScript가 전역 범위에서 실행되었습니다. 변수 이름이 충돌했고 코드 순서가 중요했습니다. 파일은 순서대로 로드해야 했습니다. ES 모듈은 모든 파일에 자체 범위, 명시적인 가져오기, 트리 셰이킹이 가능한 내보내기를 제공합니다.

이름 있는 내보내기

export 키워드로 특정 값을 내보냅니다. 하나의 파일에 여러 개의 이름 있는 내보내기를 포함할 수 있습니다. 사용하는 쪽에서는 필요한 것만 정확히 가져옵니다.

// utils.js
export const PI = 3.14159;

export function add(a, b) {
  return a + b;
}

export class Vector {
  constructor(x, y) { this.x = x; this.y = y; }
}

이름 있는 가져오기

중괄호를 사용해 이름 있는 내보내기를 가져옵니다. 하나의 문에서 한 모듈의 여러 내보내기를 가져올 수 있습니다.

import { PI, add, Vector } from './utils.js';

console.log(PI);        // 3.14159
console.log(add(2, 3)); // 5

기본 내보내기

각 모듈에는 기본 내보내기를 하나만 둘 수 있으며, 일반적으로 모듈이 제공하는 주요 항목을 내보냅니다. 중괄호 없이 가져오고 원하는 이름을 지정할 수 있습니다.

// Button.js
export default function Button({ label }) {
  return `<button>${label}</button>`;
}

// Importing:
import Button from './Button.js';
import MyButton from './Button.js'; // any name works

다시 내보내기

모듈은 다른 모듈에서 다시 내보내기를 수행해 배럴 파일을 만들 수 있습니다. 배럴 파일은 여러 항목을 다시 내보내는 하나의 진입점입니다.

// components/index.js
export { default as Button } from './Button.js';
export { default as Input } from './Input.js';
export { default as Modal } from './Modal.js';

// Consumer:
import { Button, Input, Modal } from './components';

네임스페이스 가져오기

import * as name을 사용하면 모듈의 모든 항목을 네임스페이스 객체로 가져옵니다. 많은 내보내기가 필요하거나 출처를 명시적으로 드러내고 싶을 때 유용합니다.

import * as utils from './utils.js';

console.log(utils.PI);        // 3.14159
console.log(utils.add(1, 2)); // 3

부수 효과만을 위한 가져오기

일부 모듈은 부수 효과만을 위해 가져옵니다(폴리필, 이벤트 처리기 등록 등). 이러한 모듈은 바인딩 없이 가져옵니다.

import './polyfills.js'; // runs the code, imports nothing

동적 import() — 코드 분할

동적 import() 함수는 Promise를 반환합니다. 모듈이 필요할 때만 지연해서 로드하는 데 사용합니다. 번들러는 동적으로 가져오는 모듈을 위한 별도의 청크를 자동으로 만듭니다.

// Load a heavy module only when the button is clicked:
button.addEventListener('click', async () => {
  const { processFile } = await import('./fileProcessor.js');
  processFile(data);
});

import.meta

import.meta는 모듈 내부에서 사용할 수 있는 특수 객체입니다. import.meta.url은 모듈의 URL입니다. Vite는 환경 변수를 위해 import.meta.env를 사용합니다.

// Vite environment variables:
console.log(import.meta.env.VITE_API_URL);
console.log(import.meta.env.MODE); // 'development' or 'production'

모듈 해석

Vite와 같은 번들러는 파일 시스템에서 모듈을 해석합니다(예: './utils'와 같은 상대 경로), node_modules('lodash'), 또는 vite.config.js에서 설정한 경로 별칭('@/components')을 사용합니다.

CommonJS와 ES 모듈 비교

Node.js는 원래 CommonJS(require / module.exports)를 사용했습니다. 브라우저는 ES 모듈(import / export)을 사용합니다. 최신 Node.js도 package.json의 type: "module"을 사용해 ES 모듈을 지원합니다.

// CommonJS (Node.js, older tooling):
const fs = require('fs');
module.exports = { myFunc };

// ES Modules (modern):
import fs from 'fs';
export { myFunc };

빠른 확인

정적 가져오기 대신 dynamic import()를 사용할 때의 주요 장점은 무엇입니까?

복습: ES 모듈

여러 값을 위해 이름 있는 내보내기와 가져오기를 사용합니다. 주요 항목에는 기본 내보내기와 가져오기를 사용합니다. 다시 내보내기로 배럴 파일을 만들 수 있습니다. 동적 import()로 지연 로드와 코드 분할을 구현할 수 있습니다. import.meta는 모듈 메타데이터를 제공합니다. 번들러는 별칭, node_modules, 상대 경로를 해석합니다.

자주 묻는 질문

“모듈: import와 export” 강의는 무료인가요?

네 — “모듈: import와 export” 전체 내용을 이 웹사이트에서 무료로 읽을 수 있습니다. 인터랙티브하게 실습하려면(내장 코드 에디터와 24/7 AI 튜터), CoddyKit PRO로 업그레이드하면 Frontend Academy 강의 전체를 잠금 해제할 수 있습니다. Frontend Academy 강의에는 총 4개의 강의가 포함되어 있습니다.

“모듈: import와 export”에서 뭘 배우나요?

이름 있는 export와 기본 export를 사용해 코드를 ES 모듈로 나누고, 필요한 항목만 import하며, 모듈 번들러가 의존성 그래프를 해석하는 방식을 이해합니다. 브라우저에서 직접 실행하는 실습 코드로 Frontend Academy을(를) 배우며, 24/7 AI 튜터가 강의를 진행하면서 질문에 답변해줍니다.

Frontend Academy을(를) 시작하는 데 경험이 필요한가요?

사전 경험은 필요하지 않습니다. CoddyKit의 Frontend Academy은(는) 초급자부터 고급 학습자까지를 위해 구성되어 있으므로, 여기서 시작하거나 처음부터 시작할 수 있으며 자신의 속도대로 진행할 수 있습니다. 이것은 4개 중 4번째 강의입니다.

“모듈: import와 export” 강의는 얼마나 걸리나요?

대부분의 CoddyKit 강의는 약 5~10분이 소요됩니다. 각 강의는 간결하고 인터랙티브하여 꾸준한 진행이 가능하며, 웹과 앱에서 중단한 부분부터 바로 시작할 수 있습니다.

이 Frontend Academy 강의에서 코드를 작성하고 실행할 수 있나요?

네. 모든 Frontend Academy 강의에는 내장 코드 에디터가 포함되어 있으므로, 브라우저에서 바로 실제 코드를 작성하고 실행한 후 즉시 AI 피드백을 받을 수 있습니다 — 로컬 설정이 필요 없습니다.

이 강의의 모든 강의

  1. 배열 메서드: map, filter, reduce, find
  2. 객체 구조 분해와 전개
  3. 템플릿 리터럴과 선택적 체이닝
  4. 모듈: import와 export
← Frontend Academy(으)로 돌아가기