🔹 자바스크립트 모듈이란?
자바스크립트(JavaScript)는 현대적인 웹 개발에서 필수적인 프로그래밍 언어이며, 프로젝트가 커질수록 코드의 구조화와 재사용성이 중요한 요소가 됩니다.
이를 해결하기 위해 모듈 시스템이 등장했으며, 모듈을 사용하면 코드의 가독성을 높이고 유지보수를 쉽게 할 수 있습니다.
✅ 모듈을 사용하는 이유
자바스크립트 모듈을 활용하면 다음과 같은 장점이 있습니다.
🔹 코드 재사용성 증가 → 한 번 작성한 코드를 여러 프로젝트에서 재사용할 수 있습니다.
🔹 캡슐화(Encapsulation) 적용 → 모듈 내부의 변수와 함수가 외부에 노출되지 않도록 보호할 수 있습니다.
🔹 유지보수 및 협업 용이성 → 팀원들이 별도의 기능을 독립적으로 개발할 수 있어 충돌을 방지할 수 있습니다.
🔹 가독성 향상 → 코드가 기능별로 분리되어 있어 유지보수가 쉽고, 프로젝트 관리가 더욱 용이합니다.
🔹 자바스크립트 모듈 시스템 개요
자바스크립트의 모듈 시스템은 기본적으로 ES6 모듈(ES Modules, ESM) 과 CommonJS 두 가지 방식이 있습니다.
구분 | ES6 모듈 (import/export ) |
CommonJS (require/module.exports ) |
---|---|---|
사용 환경 | 최신 브라우저 및 프론트엔드 프로젝트 | Node.js 환경에서 주로 사용 |
비동기 지원 | ✅ 지원 (비동기 로드 가능) | ❌ 동기적으로 실행 |
내보내기 방식 | export , export default 사용 |
module.exports 사용 |
가져오기 방식 | import 사용 |
require 사용 |
✅ 프론트엔드 프로젝트에서는 import/export
을 활용하는 ES6 모듈 방식을 주로 사용하며,
✅ Node.js 프로젝트에서는 require/module.exports
방식이 더 많이 사용됩니다.
하지만 최근 Node.js에서도 ES6 모듈을 지원하기 때문에 프로젝트에 따라 적절한 방식을 선택하면 됩니다.
🔹 모듈 내보내기(Export)와 가져오기(Import)
자바스크립트에서 모듈을 사용하려면 내보내기(Export) 와 가져오기(Import) 개념을 알아야 합니다.
📌 1) 모듈 내보내기 (Export)
자바스크립트에서는 모듈을 export
키워드를 사용하여 외부로 내보낼 수 있습니다.
내보내는 방식에는 Named Export 와 Default Export 두 가지가 있습니다.
🔸 Named Export (이름을 지정하여 내보내기)
여러 개의 변수를 한 번에 내보낼 수 있으며, 가져올 때 이름을 동일하게 사용해야 합니다.
// math.js
// 특정 상수와 함수를 외부에서 사용할 수 있도록 내보냅니다.
export const PI = 3.14159;
export function add(a, b) {
return a + b; // 두 숫자의 합을 반환
}
export function subtract(a, b) {
return a - b; // 두 숫자의 차를 반환
}
🔸 Default Export (기본 값으로 내보내기)
모듈에서 하나의 기본 값을 내보낼 때 사용합니다.
// greet.js
// 기본적으로 문자열을 내보내는 모듈
const greeting = "Hello, JavaScript!";
export default greeting; // 기본 내보내기 (import 시 원하는 이름 사용 가능)
📌 2) 모듈 가져오기 (Import)
내보낸 모듈을 다른 파일에서 사용할 때는 import
키워드를 활용합니다.
🔸 Named Import (이름을 지정하여 가져오기)
내보낸 이름과 동일한 이름을 사용해야 합니다.
// main.js
// math.js에서 내보낸 Named Export들을 가져오기
import { PI, add, subtract } from './math.js';
console.log(PI); // 3.14159
console.log(add(10, 5)); // 15
console.log(subtract(10, 5)); // 5
🔸 Default Import (기본 값 가져오기)
기본 값으로 내보낸 요소는 임의의 이름으로 가져올 수 있습니다.
// main.js
// greet.js에서 내보낸 기본 내보내기 값을 가져옴
import message from './greet.js';
console.log(message); // Hello, JavaScript!
🔹 실전 예제: 계산기 모듈 만들기
실제 프로젝트에서 모듈을 어떻게 활용하는지 살펴보기 위해, 간단한 계산기 기능을 모듈로 분리해보겠습니다.
📌 1) 계산 기능을 모듈로 분리 (calculator.js
)
// calculator.js
// 두 숫자를 곱하는 함수
export function multiply(a, b) {
return a * b;
}
// 두 숫자를 나누는 함수 (0으로 나누는 경우 예외 처리)
export function divide(a, b) {
if (b === 0) {
throw new Error("0으로 나눌 수 없습니다.");
}
return a / b;
}
📌 2) UI 기능을 모듈로 분리 (ui.js
)
// ui.js
// calculator.js에서 제공하는 기능을 가져옴
import { multiply, divide } from './calculator.js';
// 두 숫자를 입력받아 곱셈과 나눗셈 결과를 출력하는 함수
export function printCalculation(a, b) {
console.log(`곱하기: ${multiply(a, b)}`);
console.log(`나누기: ${divide(a, b)}`);
}
📌 3) 메인 파일에서 실행 (main.js
)
// main.js
// UI 모듈에서 제공하는 printCalculation 함수를 가져옴
import { printCalculation } from './ui.js';
// 계산 실행
printCalculation(6, 3);
// 출력:
// 곱하기: 18
// 나누기: 2
📌 이처럼 기능별로 모듈을 분리하면, 코드가 더욱 깔끔해지고 유지보수가 쉬워집니다.
🔹 결론
자바스크립트의 모듈 시스템을 활용하면 코드의 가독성을 높이고 유지보수를 쉽게 할 수 있으며, 대규모 애플리케이션에서도 기능별로 분리하여 효과적으로 관리할 수 있습니다.
📌 핵심 정리
✔️ 모듈은 코드의 구조화를 돕고, 재사용성을 높이는 필수적인 개념이다.
✔️ export
키워드를 사용하여 모듈을 내보내고, import
키워드로 가져올 수 있다.
✔️ Named Export와 Default Export를 적절히 활용하면 모듈을 유연하게 사용할 수 있다.
✔️ 모듈 시스템을 적용하면 유지보수와 협업이 쉬워진다.
'프로그래밍 > Javascript' 카테고리의 다른 글
효율적인 자바스크립트 개발을 위한 필수 도구, npm (1) | 2025.02.11 |
---|---|
자바스크립트 개발 도구: 브라우저 콘솔의 모든 것 (0) | 2025.02.11 |
자바스크립트 비동기 처리: 콜백에서 async/await까지 정복하기 (0) | 2025.02.11 |
DOM (Document Object Model): 웹 페이지의 구조와 상호작용을 위한 모든 것 (0) | 2025.02.11 |
자바스크립트 배열 정복: 개념부터 다차원 배열, 유용한 메소드까지 총정리! (0) | 2025.02.10 |