Node.js란 무엇인가?
Node.js는 서버 측에서 자바스크립트를 실행할 수 있도록 해주는 오픈 소스 런타임 환경입니다. 2009년에 라이언 달(Ryan Dahl)에 의해 개발되었으며, 비동기 이벤트 기반의 아키텍처를 통해 높은 확장성과 빠른 응답 속도를 제공합니다. 웹 서버, API, 마이크로서비스 등 다양한 서버 애플리케이션을 구축할 수 있는 강력한 도구입니다.
Node.js 설치 방법
Node.js 다운로드
Node.js를 설치하기 위해서는 먼저 공식 웹사이트에서 설치 파일을 다운로드해야 합니다. 다음 링크에서 최신 버전을 받을 수 있습니다:
Node.js 설치 방법
Node.js 설치는 매우 간단합니다. 다운로드한 설치 파일을 실행하고, 설치 마법사의 지시에 따라 진행하면 됩니다. 대부분의 경우 추가 설정 없이 기본 설치 경로를 그대로 사용해도 문제없습니다.
Node.js 설치 후 설정
Node.js를 설치한 후에는 추가 설정이 필요하지 않습니다. 기본 설치 경로는 C:\Program Files\nodejs이며, 설치가 완료되면 다음과 같은 파일들이 포함되어 있습니다:
- node.exe: 자바스크립트 실행 엔진
- npm: Node.js 패키지를 관리하기 위한 명령행 프로그램
- node_modules: Node.js 확장 패키지 설치 경로
Node.js가 올바르게 설치되었는지 확인하려면 명령 프롬프트나 터미널에서 다음 명령을 실행하여 버전 정보를 확인할 수 있습니다:
node -v
npm -v
웹 서버 만들기
간단한 웹 서버 만들기
Node.js를 사용하면 간단한 웹 서버를 빠르게 구축할 수 있습니다. 아래의 예제 코드는 기본적인 HTTP 서버를 생성하여 "Hello World" 메시지를 반환합니다.
var http = require('http');
var server = http.createServer(function (req, res) {
res.writeHead(200, { 'Content-Type': 'text/plain' });
res.end('Hello World');
});
server.listen(8000);
위 소스를 app.js로 저장한 후, 명령 창에서 다음과 같이 실행합니다:
node app.js
이제 웹 브라우저를 열고 http://127.0.0.1:8000을 입력하면, "Hello World" 메시지가 화면에 나타나는 것을 확인할 수 있습니다. 이는 웹 서버가 정상적으로 실행되고 있음을 의미합니다.
Express 패키지를 이용한 웹 서버 만들기
Express란?
Express는 Node.js에서 가장 널리 사용되는 웹 프레임워크로, 다양한 템플릿 엔진과 미들웨어를 활용하여 웹 애플리케이션을 쉽게 구축할 수 있도록 도와줍니다. Express는 라우팅, 미들웨어 관리, 템플릿 렌더링 등의 기능을 제공하며, 빠르고 유연한 웹 서버 개발을 가능하게 합니다.
Express 설치 방법
Express를 사용하기 위해서는 먼저 npm을 이용하여 Express 패키지를 설치해야 합니다. Express 패키지를 설치하려면 다음 명령을 입력합니다:
npm install express
이 명령은 현재 작업 디렉토리에 node_modules 폴더를 생성하고, 그 안에 Express 패키지를 설치합니다. 웹 애플리케이션 프로젝트의 루트 디렉토리에서 실행하는 것이 좋습니다.
Express를 사용한 웹 서버 예제
이제 Express를 사용하여 간단한 웹 서버를 만들어보겠습니다. 아래의 코드는 HTTP 서버를 생성하고, 두 개의 라우트를 정의하여 각각 "Hello /"와 "Hello World" 메시지를 반환합니다.
var express = require('express')
, http = require('http')
, app = express()
, server = http.createServer(app);
app.get('/', function (req, res) {
res.send('Hello /');
});
app.get('/world.html', function (req, res) {
res.send('Hello World');
});
server.listen(8000, function() {
console.log('Express server listening on port ' + server.address().port);
});
위 소스를 express.js로 저장한 후, 다음 명령으로 실행합니다:
node express.js
이제 http://127.0.0.1:8000에 접속하면 "Hello /" 메시지가 나타나며, http://127.0.0.1:8000/world.html에서는 "Hello World" 메시지가 나타납니다. 이처럼 Express를 사용하면 더 구조적이고 확장성 있는 웹 서버를 쉽게 구축할 수 있습니다.
Express 미들웨어 활용
Express의 강력한 기능 중 하나는 미들웨어입니다. 미들웨어는 요청이 처리되는 동안 특정 작업을 수행할 수 있는 함수로, 로깅, 인증, 데이터 파싱 등을 처리하는 데 유용합니다. 예를 들어, 요청을 로깅하는 미들웨어를 추가하려면 다음과 같이 작성할 수 있습니다:
app.use(function(req, res, next) {
console.log('Request URL:', req.originalUrl);
next();
});
이 코드는 모든 요청에 대해 URL을 로그에 기록한 후, 다음 미들웨어나 라우트 핸들러로 넘어가도록 합니다.
Node.js와 Express로 확장성 있는 웹 애플리케이션 구축하기
라우팅과 템플릿 엔진 사용하기
Express에서는 라우팅과 템플릿 엔진을 쉽게 사용할 수 있습니다. 라우팅은 특정 URL에 대한 요청을 처리하는 방법을 정의하며, 템플릿 엔진은 동적 HTML을 생성하는 데 사용됩니다. 예를 들어, Pug라는 템플릿 엔진을 사용하여 뷰를 렌더링할 수 있습니다.
먼저 Pug를 설치합니다:
npm install pug
이제 Pug를 사용하여 간단한 라우트를 작성해보겠습니다.
app.set('view engine', 'pug');
app.get('/hello', function (req, res) {
res.render('hello', { title: 'Hello', message: 'Hello World with Pug!' });
});
views 폴더에 hello.pug 파일을 생성하고, 다음과 같이 작성합니다:
doctype html
html
head
title= title
body
h1= message
이제 http://127.0.0.1:8000/hello에 접속하면, Pug 템플릿 엔진을 통해 생성된 "Hello World with Pug!" 메시지를 볼 수 있습니다.
데이터베이스와의 연동
Node.js와 Express를 사용하여 데이터베이스와 연동하는 것도 매우 쉽습니다. MySQL, MongoDB, PostgreSQL 등 다양한 데이터베이스와 연동할 수 있으며, 각 데이터베이스에 맞는 패키지를 설치하여 사용합니다. 예를 들어, MySQL과 연동하려면 다음과 같이 mysql 패키지를 설치합니다:
npm install mysql
이제 MySQL 데이터베이스와 연결하여 데이터를 조회하는 예제를 작성해보겠습니다.
var mysql = require('mysql');
var connection = mysql.createConnection({
host : 'localhost',
user : 'root',
password : '',
database : 'test'
});
connection.connect();
app.get('/users', function (req, res) {
connection.query('SELECT * FROM users', function (error, results, fields) {
if (error) throw error;
res.send(results);
});
});
이 코드는 users 테이블에서 데이터를 조회하여 클라이언트에게 반환합니다. http://127.0.0.1:8000/users에 접속하면, JSON 형식으로 데이터베이스의 내용이 출력됩니다.
Node.js와 Express로 API 서버 만들기
Node.js와 Express는 RESTful API 서버를 구축하는 데도 많이 사용됩니다. REST API는 웹 서비스 간에 데이터를 주고받기 위한 표준 아키텍처 스타일로, 클라이언트와 서버 간의 통신을 쉽게 구현할 수 있습니다.
다음은 간단한 REST API 서버를 만드는 예제입니다.
app.get('/api/users', function(req, res) {
// 모든 사용자 조회
res.json(users);
});
app.post('/api/users', function(req, res) {
// 새로운 사용자 추가
var newUser = req.body;
users.push(newUser);
res.status(201).json(newUser);
});
app.put('/api/users/:id', function(req, res) {
// 특정 사용자 업데이트
var id = req.params.id;
var updatedUser = req.body;
users[id] = updatedUser;
res.json(updatedUser);
});
app.delete('/api/users/:id', function(req, res) {
// 특정 사용자 삭제
var id = req.params.id;
users.splice(id, 1);
res.status(204).end();
});
이 코드는 간단한 사용자 CRUD(Create, Read, Update, Delete) API를 구현한 것으로, /api/users 경로를 통해 데이터를 주고받을 수 있습니다.
Node.js의 확장성과 커뮤니티
Node.js는 매우 확장성이 뛰어난 플랫폼으로, 대규모 애플리케이션 개발에 적합합니다. 또한 활발한 오픈 소스 커뮤니티를 통해 다양한 라이브러리와 프레임워크를 제공받을 수 있으며, 지속적인 업데이트와 성능 개선이 이루어지고 있습니다.
Node.js를 사용하면 비동기 프로그래밍의 강력함을 활용하여 고성능, 저지연의 애플리케이션을 개발할 수 있습니다. 특히 실시간 애플리케이션, 마이크로서비스, API 서버 등 다양한 분야에서 활용되고 있으며, JavaScript를 서버 측에서도 사용함으로써 전체 애플리케이션 스택에서 일관된 언어를 사용할 수 있는 장점이 있습니다.