Node.js 모듈 시스템과 CommonJS의 이해
Node.js는 서버 측 애플리케이션을 개발하기 위해 널리 사용되는 JavaScript 런타임 환경입니다. 이 플랫폼은 비동기식 이벤트 주도 프로그래밍을 기반으로 하며, 모듈 시스템을 통해 코드의 재사용성을 높이고 관리의 편의성을 제공합니다. 이 글에서는 Node.js의 모듈 시스템과 CommonJS에 대해 자세히 살펴보겠습니다.

Node.js의 모듈 시스템
Node.js는 모듈 시스템을 통해 코드의 구조화를 지원합니다. 이를 통해 개발자는 기능별로 코드를 나누어 작성할 수 있으며, 이렇게 모듈화된 코드는 필요할 때 쉽게 불러와 사용할 수 있습니다. 이러한 구조는 코드의 유지보수성을 높이고, 협업 시 충돌이나 오류를 줄이는 데 기여합니다.
- 모듈화: 코드의 기능을 작은 단위로 나누어 작성.
- 재사용성: 작성한 모듈은 다양한 위치에서 호출 가능.
- 유지보수 용이: 코드 변경 시 특정 부분만 수정하면 됨.
CommonJS와 Node.js의 관계
Node.js는 CommonJS 사양을 따릅니다. 이는 자바스크립트 모듈을 정의하고 사용하는 방식을 규정합니다. CommonJS는 다양한 모듈 시스템을 지원하는데, Node.js는 이를 구현한 대표적인 사례입니다. 모듈은 기본적으로 require()
를 통해 불러오고, module.exports
를 통해 외부에 공개합니다.
CommonJS의 기본 사용법
CommonJS에서 모듈을 작성하고 사용하는 방법은 다음과 같은 단계로 진행됩니다:
- 모듈 생성: 기능을 구현한 JavaScript 파일을 생성합니다. 예를 들어,
math.js
라는 파일에 수학 관련 함수들을 작성합니다. - 내보내기:
module.exports
를 사용하여 외부에서 사용할 수 있는 기능을 내보냅니다. 예를 들어,module.exports.add = function(a, b) { return a + b; };
와 같이 작성할 수 있습니다. - 모듈 사용: 다른 파일에서
require()
를 통해 해당 모듈을 불러온 후 사용할 수 있습니다. 예를 들어,const math = require('./math');
로 모듈을 불러온 뒤,math.add(2, 3);
와 같은 방법으로 함수를 호출할 수 있습니다.
모듈 구조의 예시
아래는 기본적인 Node.js 모듈의 구조 예시입니다:
// math.js
module.exports.add = function(a, b) {
return a + b;
};
module.exports.subtract = function(a, b) {
return a - b;
};
// app.js
const math = require('./math');
console.log(math.add(5, 3)); // 8
console.log(math.subtract(5, 3)); // 2
Node.js 애플리케이션에서의 Passport 모듈 사용법
Node.js의 애플리케이션에서 사용자의 인증 처리를 위해 Passport 모듈을 활용할 수 있습니다. Passport는 여러 인증 전략을 지원하여, 개발자가 시스템에 쉽게 통합할 수 있도록 도와줍니다. 예를 들어, 소셜 로그인을 포함한 인증 시스템을 구현할 수 있습니다.

Passport 기본 사용법
Passport 모듈을 사용하기 위해서는 먼저 관련 패키지를 설치해야 합니다. 그런 다음, 애플리케이션에서 Passport를 설정하고 미들웨어로 사용해야 합니다. 아래는 Passport를 설정하는 기본적인 코드 예시입니다:
const express = require('express');
const passport = require('passport');
const session = require('express-session');
const app = express();
app.use(session({ secret: 'your_secret_key', resave: false, saveUninitialized: true }));
app.use(passport.initialize());
app.use(passport.session());
// 여기서 Passport 전략 설정...
Passport 전략 설정
Passport를 통해 다양한 인증 방법을 사용할 수 있습니다. 로컬 전략, 소셜 로그인 등 여러 선택지가 있으며, 각각의 전략에 맞게 설정한 후 사용할 수 있습니다.
- 로컬 전략: 사용자 이름과 비밀번호를 사용하여 로그인을 처리하는 방법.
- 소셜 로그인: Facebook, Google, Kakao와 같은 외부 서비스로부터 인증 정보를 받아 처리하는 방법.
각 전략은 passport.use()
메서드를 통해 추가할 수 있으며, 이에 대한 구현은 각 서비스의 API 문서를 참고하여 진행해야 합니다.
로그인 처리 흐름
로그인 처리는 다음과 같은 흐름으로 진행됩니다:
- 사용자가 로그인 요청을 보냅니다.
- 서버는
passport.authenticate()
메서드를 호출하여 사용자의 자격 증명을 검사합니다. - 인증에 성공하면 세션이 생성되고, 사용자는 인증된 상태로 유지됩니다.

결론
Node.js의 모듈 시스템과 CommonJS를 통해 개발자는 효율적이고 간결한 코드 작성이 가능합니다. 또한 Passport 모듈을 통해 안전하고 편리한 사용자 인증 시스템을 손쉽게 구현할 수 있습니다. 이러한 기능들은 Node.js 애플리케이션을 보다 강력하고 유연하게 만들어 줍니다.
질문 FAQ
Node.js에서 모듈이란 무엇인가요?
Node.js에서 모듈은 특정 기능이나 구성 요소를 구현하여 이를 다른 코드와 쉽게 통합할 수 있도록 돕는 독립적인 JavaScript 파일입니다.
CommonJS는 어떤 역할을 하나요?
CommonJS는 자바스크립트 모듈을 정의하는 표준을 제공하여, Node.js와 같은 환경에서 모듈을 효과적으로 관리하고 사용할 수 있게 합니다.
모듈을 어떻게 불러오고 사용할 수 있나요?
작성한 모듈은 require()
함수를 사용해 호출할 수 있으며, 이를 통해 해당 모듈의 기능을 손쉽게 활용할 수 있습니다.