🚀 웹 개발의 새로운 세계로 떠나볼 준비가 되셨나요? Node.js를 사용하면 JavaScript 하나로 서버와 클라이언트를 모두 다룰 수 있습니다! 이 가이드를 통해 Node.js의 기초부터 실제 웹 애플리케이션 개발까지, 단계별로 쉽게 배워보세요. 코딩 경험이 전혀 없어도 괜찮습니다. 지금 바로 미래의 웹 개발자로 향하는 첫걸음을 내딛어보세요!
목차
- Node.js 소개
- 개발 환경 설정
- 첫 번째 Node.js 애플리케이션
- Express.js 프레임워크 소개
- 라우팅과 미들웨어
- 템플릿 엔진 사용하기
- 데이터베이스 연동 (MongoDB)
- RESTful API 만들기
- 사용자 인증 구현
- 실시간 기능 추가 (Socket.io)
- 배포하기
- 보안 고려사항
- 성능 최적화 팁
- 추가 학습 자료
Node.js 소개
Node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임입니다. 이를 통해 개발자는 서버 사이드 애플리케이션을 JavaScript로 작성할 수 있습니다. Node.js의 주요 특징은 다음과 같습니다:
- 비동기 I/O 처리
- 이벤트 기반 모델
- 빠른 실행 속도
- NPM(Node Package Manager)을 통한 풍부한 라이브러리 생태계
개발 환경 설정
Node.js를 시작하기 위해 먼저 개발 환경을 설정해야 합니다.
- Node.js 설치:
- Node.js 공식 웹사이트에서 LTS 버전을 다운로드하고 설치합니다.
- 설치 확인:
터미널(맥/리눅스) 또는 명령 프롬프트(윈도우)를 열고 다음 명령어를 실행합니다:
# Node.js 버전 확인
node --version
# npm 버전 확인
npm --version
- 코드 에디터 설치:
- Visual Studio Code 같은 코드 에디터를 설치합니다.
첫 번째 Node.js 애플리케이션
간단한 “Hello, World!” 애플리케이션을 만들어 보겠습니다.
- 프로젝트 폴더 생성:
# 새 디렉토리 생성 및 이동
mkdir my-first-node-app
cd my-first-node-app
app.js파일 생성:
// 간단한 Hello, World! 출력
console.log("Hello, World!");
- 애플리케이션 실행:
# Node.js 애플리케이션 실행
node app.js
축하합니다! 첫 번째 Node.js 애플리케이션을 실행했습니다.
Express.js 프레임워크 소개
Express.js는 Node.js를 위한 빠르고 개방적인 웹 애플리케이션 프레임워크입니다. 웹 애플리케이션과 API를 쉽게 만들 수 있게 해줍니다.
- Express 설치:
# npm 프로젝트 초기화
npm init -y
# Express 설치
npm install express
- 기본 Express 애플리케이션 생성 (
app.js):
// Express 애플리케이션 생성
const express = require('express');
const app = express();
const port = 3000;
// 루트 경로 핸들러
app.get('/', (req, res) => {
res.send('Hello, Express!');
});
// 서버 시작
app.listen(port, () => {
console.log(`Server running at http://localhost:${port}`);
});
- 애플리케이션 실행:
# Express 애플리케이션 실행
node app.js
브라우저에서 http://localhost:3000을 열어 결과를 확인하세요.
라우팅과 미들웨어
Express에서 라우팅은 애플리케이션의 엔드포인트를 정의하는 방법입니다. 미들웨어는 요청과 응답 사이에서 동작하는 함수입니다.
- 라우팅 예제:
// 'About' 페이지 라우트
app.get('/about', (req, res) => {
res.send('About Us Page');
});
// 데이터 제출 POST 라우트
app.post('/submit-data', (req, res) => {
res.send('Data Received');
});
- 미들웨어 예제:
// 로깅 미들웨어
app.use((req, res, next) => {
console.log(`${new Date().toISOString()} - ${req.method} ${req.url}`);
next();
});
템플릿 엔진 사용하기
템플릿 엔진을 사용하면 동적 콘텐츠를 쉽게 생성할 수 있습니다. EJS(Embedded JavaScript)를 예로 사용해보겠습니다.
- EJS 설치:
# EJS 템플릿 엔진 설치
npm install ejs
- EJS 설정:
// EJS를 뷰 엔진으로 설정
app.set('view engine', 'ejs');
- 템플릿 생성 (
views/index.ejs):
<h1>Welcome, <%= name %>!</h1>
- 템플릿 렌더링:
// 템플릿 렌더링
app.get('/', (req, res) => {
res.render('index', { name: 'John' });
});
데이터베이스 연동 (MongoDB)
MongoDB는 NoSQL 데이터베이스로, Node.js와 잘 어울립니다.
- MongoDB 설치 (시스템에 따라 다름)
- Mongoose 설치 (MongoDB ODM):
# Mongoose 설치
npm install mongoose
- MongoDB 연결:
// MongoDB 연결
const mongoose = require('mongoose');
mongoose.connect('mongodb://localhost/myapp', { useNewUrlParser: true, useUnifiedTopology: true });
- 모델 정의:
// 사용자 모델 정의
const User = mongoose.model('User', { name: String, email: String });
- 데이터 저장:
// 새 사용자 생성 및 저장
const user = new User({ name: 'John Doe', email: 'john@example.com' });
user.save().then(() => console.log('User saved'));
RESTful API 만들기
REST(Representational State Transfer)는 웹 서비스를 설계하는 아키텍처 스타일입니다.
- 기본 CRUD 작업:
// Create: 새 사용자 생성
app.post('/users', (req, res) => {
// 사용자 생성 로직
});
// Read: 사용자 목록 조회
app.get('/users', (req, res) => {
// 사용자 목록 조회 로직
});
// Update: 사용자 정보 업데이트
app.put('/users/:id', (req, res) => {
// 사용자 정보 업데이트 로직
});
// Delete: 사용자 삭제
app.delete('/users/:id', (req, res) => {
// 사용자 삭제 로직
});
사용자 인증 구현
사용자 인증은 대부분의 웹 애플리케이션에서 중요한 부분입니다. Passport.js를 사용하여 구현해보겠습니다.
- 필요한 패키지 설치:
# 인증 관련 패키지 설치
npm install passport passport-local express-session bcryptjs
- Passport 설정:
const passport = require('passport');
const LocalStrategy = require('passport-local').Strategy;
const session = require('express-session');
// 세션 미들웨어 설정
app.use(session({ secret: 'your secret key', resave: false, saveUninitialized: false }));
app.use(passport.initialize());
app.use(passport.session());
// Passport 전략 설정
passport.use(new LocalStrategy(
function(username, password, done) {
// 사용자 인증 로직
// 예: 데이터베이스에서 사용자 조회 및 비밀번호 확인
}
));
실시간 기능 추가 (Socket.io)
Socket.io를 사용하면 실시간 양방향 통신을 쉽게 구현할 수 있습니다.
- Socket.io 설치:
# Socket.io 설치
npm install socket.io
- Socket.io 설정:
const http = require('http').createServer(app);
const io = require('socket.io')(http);
io.on('connection', (socket) => {
console.log('A user connected');
// 채팅 메시지 수신 및 브로드캐스트
socket.on('chat message', (msg) => {
io.emit('chat message', msg);
});
});
배포하기
애플리케이션을 개발한 후에는 배포 단계입니다. Heroku를 예로 들어보겠습니다.
- Heroku CLI 설치
- Heroku 앱 생성:
# Heroku 앱 생성
heroku create
- 코드 푸시:
# Heroku에 코드 푸시
git push heroku main
보안 고려사항
웹 애플리케이션 개발 시 보안은 매우 중요합니다.
- 환경 변수 사용: 중요한 정보는 환경 변수에 저장
- 입력 검증: 사용자 입력을 항상 검증
- HTTPS 사용: 데이터 전송 시 암호화
- 의존성 패키지 정기 업데이트
성능 최적화 팁
- 비동기 프로그래밍 활용
- 캐싱 전략 사용
- 데이터베이스 쿼리 최적화
- 코드 분할과 지연 로딩
추가 학습 자료
이제 여러분은 Node.js를 사용한 웹 애플리케이션 개발의 기본을 알게 되었습니다. 계속해서 코딩하고, 실험하고, 학습하세요. 웹 개발의 무한한 가능성이 여러분을 기다리고 있습니다. 행운을 빕니다! 🚀👨💻👩💻