Node.js
이번 포스트에서 알아볼 내용은 Node.js 이다. Node.js의 등장은 Javascript 역사 중 중요한 포인트이다. 말그대로 스크립트 언어에서 어떠한 환경에서도 사용 할수 있는 언어 로써 발 돋음 할 수 있게 만들어준 굉장한 녀석이다. 그 이유는 Node.JS 는 웹브라우저에 종속적인 자바스크립트에서 외부에서 실행할 수 있는 Runtime 환경을 Chrome의 V8 엔진을 제공하여 여러 OS 환경에서 실행할 수 있는 환경을 제공해주는 역활을 하기 때문이다. 브라우저를 떠나 OS 환경에서도 구동 가능하게 되었다는 점이 핵심이다.
이런 Node.js 를 설치해 보고 몇 몇 코드 들을 실습해 보면서 어떤 느낌인지 한번 확인해 보자~!
1. Node.js 를 설치하자
윈도우의 경우 https://nodejs.org/ko/ 에 들어가서 LTS 버전의 msi 패키지 파일을 다운 받아 설치 하면 되며 기타 OS 들은 https://nodejs.org/ko/download/ 이 곳에서 찾아서 설치 하면 된다. 각 운영체제별 설치 커맨드는 https://nodejs.org/ko/download/package-manager/ 이 곳에 잘 설명이 되어있다. 설치가 되었는지 한번 확인해 보자. 콘솔창을 열어서 밑의 명령어를 실행해 보자.
node -v
설치한 LTS 버전과 같은지 확인 한번 해보고 다음 프로그램을 확인해 보자.
npm -v
이 것은 Node Package Manager 라고 하며 node.js에서 사용하는 모듈들을 패키지로 만들어 npm을 통하여 관리하고 배포하는 역활을 맏고 있다. npm을 이용하여 패키지를 설치하고자 할때는 npm install이라는 명령어를 입력하면 된다.
npm install <설치할패키지명> -g
-g 옵션을 사용할 경우 해당 패키지는 Global 하게 사용할 수 있게 설치한다. 전역 패키지 라고 생각하면 된다. 만약 이 옵션을 넣지 않는 다면 해당 프로젝트에만 사용할수 있다.
2. Node.js 프로젝트를 만들자
콘솔창을 열고 프로젝트를 생성할 디렉토리를 만들자.
mkdir npm-test
해당 폴더에 들어가서 npm 명령을 사용하여 프로젝트를 만들어 보자.
npm init
여러 가지 질문을 할것이다. 천천히 엔터를 누르다 보면 과정이 끝나 있을 것이다. 모든 과정이 끝났다면 프로젝트 폴더에 package.json 이라는 파일이 생성 되었을 것이다. 내용을 보면
{
"name": "npm-test",
"version": "1.0.0",
"description": "",
"main": "index.js",
"scripts": {
"test": "echo \"Error: no test specified\" && exit 1"
},
"author": "",
"license": "ISC"
}
요렇게 되어있을 것이다. 이 package.json 이라는 파일은 이 프로젝트에 사용되는 라이브러리를 선언 하기도 하고 컴파일 할때 필요한 정보를 넣기도 하는 node.js 에서 제법 중요한 역활을 하는 파일이며 자주 보게 될것이다.
3. index.js
이제 가볍게 프로젝트 폴더에 index.js 라는 파일은 만들어 아래 코드를 작성하여 보자.
const http = require('http');
const hostname = '127.0.0.1';
const port = 3000;
const server = http.createServer((req, res) => {
res.statusCode = 200;
res.setHeader('Content-Type', 'text/plain');
res.end('Hello World\n');
});
server.listen(port, hostname, () => {
console.log(`Server running at http://${hostname}:${port}/`);
});
이 코드를 실행 하려면 커맨드 창을 열고
node index
이렇게 실행하면 Server running at http://127.0.0.1:3000/ 라는 문구와 커맨드 창이 대기 상태가 될것이다. 웹 브라우저를 열고 http://127.0.0.1:3000/ 주소로 접속을 해보면 Hello World 가 보이면 성공이다! Apache 나 Nginx 같은 Web Server나 Tomcat 이나 IIS 같은 WAS 를 사용해 왔다면 복잡한 설정 없이 웹페이지가 뜨는 것을 보고 놀라워 해야 한다!! 기본 설정은 간편해 보이지만 웹서버가 가져야할 것들은 대부분 설정 해 줄수 있다. 그리고 무엇보다 가볍다. Node.js 서버를 실행 하보았으니 다음 과정으로 넘어 가자!
3. express
express 홈페이지에 들어가 보면 ‘Node.js를 위한 빠르고 개방적인 간결한 웹 프레임워크’ 라고 선전 하고 있다. 정말 그런지 확인 해보자! 간단하게 설치 명령이 홈페이지에 나와있다.
npm install express --save
프로젝트 폴더에서 위의 명령어를 실행해 보면 파일을 받기 시작할 것이다. 완료 된후 package.json 파일을 확인해 보면 dependencies 부분에 express 가 추가 된것이 확인 될 것이다. 아니라면 다시 설치 해보자. 설치가 되었다면 기존에 작성안 index.js 파일의 내용을 다시 작성하자.
var express = require('express'); //express 모듈을 호출한다. java의 import와 유사하다.
var app = express();
app.get('/', function (req, res) {
res.send('Hello World!');
});
app.post('/', function (req, res) {
res.send('Got a POST request');
});
app.put('/user', function (req, res) {
res.send('Got a PUT request at /user');
});
app.delete('/user', function (req, res) {
res.send('Got a DELETE request at /user');
});
//get, post, put, delete 등의 메소드를 지원한다.
app.get('/example/a', function (req, res) {
res.send('Hello from A!');
});
app.get('/example/b', function (req, res, next) {
console.log('the response will be sent by the next function ...');
next();
}, function (req, res) {
res.send('Hello from B!');
});
var cb0 = function (req, res, next) {
console.log('CB0');
next();
}
var cb1 = function (req, res, next) {
console.log('CB1');
next();
}
var cb2 = function (req, res) {
res.send('Hello from C!');
}
app.get('/example/c', [cb0, cb1, cb2]);
app.get('/example/d', [cb0, cb1], function (req, res, next) {
console.log('the response will be sent by the next function ...');
next();
}, function (req, res) {
res.send('Hello from D!');
});
//url 요청에 대한 라우팅 처리.
app.listen(3000, function () {
console.log('Example app listening on port 3000!');
});
위의 index.js 를 실행하고 브라우저에 접속하여 설정된 url로 접속 해보자. 그럼 express에서 콜백 함수를 제공하여 요청을 처리하는 것을 볼수 있다. index.js의 밑의 라우팅 부분의 next() 함수를 사용해서 요청에 대해 콜백을 순차적으로 처리하는 모습을 볼수 있다. 잘 사용하면 여러 프로세스를 거처야 하는 서비스에 응용 할 수 있을 것이다. 다음 포스트에서는 조금 더 이 웹 어플리케이션을 향상 시켜 보자.