6강. 모듈(Module)
이번 강의에서는 Node.js의 핵심 기능인 모듈(Module)을 배웁니다.
목표: 하나의 파일에 모든 코드를 작성하지 않고, 기능별로 파일을 나누어 관리할 수 있다.
1. 모듈(Module)이란?
모듈은 기능을 하나의 파일로 분리하여 사용하는 것입니다.
예를 들어 계산 기능을 별도의 파일로 만들고 다른 파일에서 가져와 사용할 수 있습니다.
프로젝트
│
├── index.js
├── calc.js
└── package.json
2. 모듈을 사용하는 이유
모든 코드를 한 파일에 작성하면 관리하기 어렵습니다.
❌ 하나의 파일
index.js
│
├── 로그인
├── 회원가입
├── 게시판
├── 댓글
├── 업로드
├── 관리자
└── API
✅ 기능별 분리
project
│
├── index.js
├── login.js
├── user.js
├── board.js
├── comment.js
├── upload.js
└── admin.js
실무에서는 거의 모든 프로젝트를 이렇게 구성합니다.
3. 첫 번째 모듈 만들기
calc.js
function add(a, b) {
return a + b;
}
module.exports = add;
4. 모듈 가져오기
index.js
const add = require("./calc");
console.log(add(10, 20));
실행
node index.js
결과
30
5. 여러 함수 내보내기
calc.js
function add(a, b) {
return a + b;
}
function sub(a, b) {
return a - b;
}
module.exports = {
add,
sub
};
6. 여러 함수 가져오기
index.js
const calc = require("./calc");
console.log(calc.add(30, 10));
console.log(calc.sub(30, 10));
결과
40
20
7. 구조 분해 할당으로 가져오기
더 많이 사용하는 방식입니다.
const { add, sub } = require("./calc");
console.log(add(100, 20));
console.log(sub(100, 20));
8. 문자열 모듈 만들기
message.js
const hello = () => {
return "안녕하세요.";
};
module.exports = hello;
index.js
const hello = require("./message");
console.log(hello());
결과
안녕하세요.
9. 객체 내보내기
user.js
module.exports = {
name: "커사맨",
age: 50,
job: "AI 크리에이터"
};
index.js
const user = require("./user");
console.log(user.name);
console.log(user.age);
console.log(user.job);
10. 배열 내보내기
fruits.js
module.exports = [
"사과",
"바나나",
"포도"
];
index.js
const fruits = require("./fruits");
console.log(fruits);
11. 모듈 경로
현재 폴더
require("./calc");
상위 폴더
require("../calc");
하위 폴더
require("./js/calc");
12. 파일 확장자 생략
다음 두 코드는 같습니다.
require("./calc");
require("./calc.js");
보통 .js는 생략합니다.
13. 모듈 캐시
같은 모듈을 여러 번 불러와도 한 번만 실행됩니다.
const user1 = require("./user");
const user2 = require("./user");
console.log(user1 === user2);
결과
true
Node.js는 같은 모듈을 메모리에 저장해 재사용합니다.
14. 실무 프로젝트 구조
project
│
├── app.js
├── package.json
├── routes
│ ├── user.js
│ ├── board.js
│ └── admin.js
│
├── controllers
│
├── models
│
├── config
│
├── public
│
└── views
실무에서는 기능별로 파일을 분리해 관리합니다.
15. 실습 1
math.js
function multiply(a, b) {
return a * b;
}
module.exports = multiply;
index.js
const multiply = require("./math");
console.log(multiply(5, 6));
16. 실습 2
person.js
module.exports = {
name: "홍길동",
age: 30
};
index.js
const person = require("./person");
console.log(person.name);
console.log(person.age);
17. 실습 3
message.js
module.exports = function(){
return "Node.js 재미있다!";
};
index.js
const message = require("./message");
console.log(message());
18. CommonJS와 ES Module
Node.js에는 두 가지 모듈 방식이 있습니다.
CommonJS (현재 강의)
const calc = require("./calc");
module.exports = calc;
ES Module (최신 JavaScript)
import calc from "./calc.js";
export default calc;
Node.js 실무에서는 CommonJS와 ES Module을 모두 접하게 되므로 두 방식 모두 알아두는 것이 좋습니다.
19. 이번 강의 핵심 정리
문법 설명
require() 모듈 가져오기
module.exports 모듈 내보내기
./ 현재 폴더
../ 상위 폴더
{} 구조 분해 할당
import / export ES Module 방식
20. 실무 팁
작은 프로젝트에서는 파일이 몇 개 안 되지만, 실제 서비스는 수백~수천 개의 파일로 구성됩니다.
예를 들어 게시판 기능만 해도 다음처럼 분리합니다.
board
│
├── board.routes.js
├── board.controller.js
├── board.service.js
├── board.model.js
└── board.validation.js
기능별로 나누면 유지보수와 협업이 훨씬 쉬워집니다.
실습 체크리스트
✅ module.exports로 함수 내보내기
✅ require()로 모듈 가져오기
✅ 객체와 배열 내보내기
✅ 여러 함수를 하나의 모듈로 관리하기
✅ 구조 분해 할당으로 필요한 함수만 가져오기
✅ 기능별 파일 분리 경험하기
이번 강의에서는 Node.js의 핵심 기능인 모듈(Module)을 배웁니다.
목표: 하나의 파일에 모든 코드를 작성하지 않고, 기능별로 파일을 나누어 관리할 수 있다.
1. 모듈(Module)이란?
모듈은 기능을 하나의 파일로 분리하여 사용하는 것입니다.
예를 들어 계산 기능을 별도의 파일로 만들고 다른 파일에서 가져와 사용할 수 있습니다.
프로젝트
│
├── index.js
├── calc.js
└── package.json
2. 모듈을 사용하는 이유
모든 코드를 한 파일에 작성하면 관리하기 어렵습니다.
❌ 하나의 파일
index.js
│
├── 로그인
├── 회원가입
├── 게시판
├── 댓글
├── 업로드
├── 관리자
└── API
✅ 기능별 분리
project
│
├── index.js
├── login.js
├── user.js
├── board.js
├── comment.js
├── upload.js
└── admin.js
실무에서는 거의 모든 프로젝트를 이렇게 구성합니다.
3. 첫 번째 모듈 만들기
calc.js
function add(a, b) {
return a + b;
}
module.exports = add;
4. 모듈 가져오기
index.js
const add = require("./calc");
console.log(add(10, 20));
실행
node index.js
결과
30
5. 여러 함수 내보내기
calc.js
function add(a, b) {
return a + b;
}
function sub(a, b) {
return a - b;
}
module.exports = {
add,
sub
};
6. 여러 함수 가져오기
index.js
const calc = require("./calc");
console.log(calc.add(30, 10));
console.log(calc.sub(30, 10));
결과
40
20
7. 구조 분해 할당으로 가져오기
더 많이 사용하는 방식입니다.
const { add, sub } = require("./calc");
console.log(add(100, 20));
console.log(sub(100, 20));
8. 문자열 모듈 만들기
message.js
const hello = () => {
return "안녕하세요.";
};
module.exports = hello;
index.js
const hello = require("./message");
console.log(hello());
결과
안녕하세요.
9. 객체 내보내기
user.js
module.exports = {
name: "커사맨",
age: 50,
job: "AI 크리에이터"
};
index.js
const user = require("./user");
console.log(user.name);
console.log(user.age);
console.log(user.job);
10. 배열 내보내기
fruits.js
module.exports = [
"사과",
"바나나",
"포도"
];
index.js
const fruits = require("./fruits");
console.log(fruits);
11. 모듈 경로
현재 폴더
require("./calc");
상위 폴더
require("../calc");
하위 폴더
require("./js/calc");
12. 파일 확장자 생략
다음 두 코드는 같습니다.
require("./calc");
require("./calc.js");
보통 .js는 생략합니다.
13. 모듈 캐시
같은 모듈을 여러 번 불러와도 한 번만 실행됩니다.
const user1 = require("./user");
const user2 = require("./user");
console.log(user1 === user2);
결과
true
Node.js는 같은 모듈을 메모리에 저장해 재사용합니다.
14. 실무 프로젝트 구조
project
│
├── app.js
├── package.json
├── routes
│ ├── user.js
│ ├── board.js
│ └── admin.js
│
├── controllers
│
├── models
│
├── config
│
├── public
│
└── views
실무에서는 기능별로 파일을 분리해 관리합니다.
15. 실습 1
math.js
function multiply(a, b) {
return a * b;
}
module.exports = multiply;
index.js
const multiply = require("./math");
console.log(multiply(5, 6));
16. 실습 2
person.js
module.exports = {
name: "홍길동",
age: 30
};
index.js
const person = require("./person");
console.log(person.name);
console.log(person.age);
17. 실습 3
message.js
module.exports = function(){
return "Node.js 재미있다!";
};
index.js
const message = require("./message");
console.log(message());
18. CommonJS와 ES Module
Node.js에는 두 가지 모듈 방식이 있습니다.
CommonJS (현재 강의)
const calc = require("./calc");
module.exports = calc;
ES Module (최신 JavaScript)
import calc from "./calc.js";
export default calc;
Node.js 실무에서는 CommonJS와 ES Module을 모두 접하게 되므로 두 방식 모두 알아두는 것이 좋습니다.
19. 이번 강의 핵심 정리
문법 설명
require() 모듈 가져오기
module.exports 모듈 내보내기
./ 현재 폴더
../ 상위 폴더
{} 구조 분해 할당
import / export ES Module 방식
20. 실무 팁
작은 프로젝트에서는 파일이 몇 개 안 되지만, 실제 서비스는 수백~수천 개의 파일로 구성됩니다.
예를 들어 게시판 기능만 해도 다음처럼 분리합니다.
board
│
├── board.routes.js
├── board.controller.js
├── board.service.js
├── board.model.js
└── board.validation.js
기능별로 나누면 유지보수와 협업이 훨씬 쉬워집니다.
실습 체크리스트
✅ module.exports로 함수 내보내기
✅ require()로 모듈 가져오기
✅ 객체와 배열 내보내기
✅ 여러 함수를 하나의 모듈로 관리하기
✅ 구조 분해 할당으로 필요한 함수만 가져오기
✅ 기능별 파일 분리 경험하기
#6강. 모듈(Module)