node.js란 무엇인가? 6.2.1 버전 설치

nodejs

 

node.js는 구글이 만든 자바스크립트 엔진인 V8 기반으로 돌아가는 웹 서버입니다. node라는 인터프리터를 통해 자바스크립트 파일을 실행시켜주면, 매우 간단하게 웹 서버를 실행시킬 수 있게 됩니다.

 

얼마나 간단한지, node.js를 설치해서 확인해 보도록 하겠습니다.

 

node.js는 2016년 6월 4일 토요일 현재 가장 최신 안정 버전으로 4.4.5 LTS, 최신 버전으로 6.2.1이 출시되어있습니다. node.js는 0.x 버전대로 시작하여 4.x 버전으로 바로 버전업이 되었는데, 이는 io.js 프로젝트가 node.js로 통합되면서 발생할 수 있을 미래의 버전 충돌 문제를 없애기 위해 그랬다고 하네요.  현재 최신 버전은 6.2.1 버전인데요, 이 버전을 설치해서 테스트 해보겠습니다. 윈도우에서 사용하시는 분은 아래의 링크에서 바로 다운로드 하시면 됩니다.

node.js 6.2.1 for windows 64bit

https://nodejs.org/dist/v6.2.1/node-v6.2.1-x64.msi

 

 

위 링크를 통해 파일을 다운로드 받은 뒤,  pc에 설치해줍니다.

기본 설정대로 우선 설치합니다. 설치 경로를 변경하길 원하신다면, 수정해 주셔도 됩니다.

 

설치가 완료되었다면 윈도우키 + r을 눌러 cmd 입력 후 콘솔창을 실행시켜봅니다.

 

기본적으로 윈도우에서 설치한 직후 path를 확인해 보면 다음과 같은 내용이 뒤에 추가되어있음을 확인할 수 있습니다.

PATH={기존에입력됐던내용};C:\Program Files\nodejs\;C:\Users\username\AppData\Roaming\npm

윈도우 환경변수 중 시스템 변수에 C:\Program Files\nodejs\ 이 내용이 추가되어있고,

현재 윈도우의 유저인 username의 사용자변수에 C:\Users\username\AppData\Roaming\npm 이 내용이 추가되어있음을 확인할 수 있습니다.

 

이는 간단하게, node라는 인터프리터를 윈도우 전역에서 사용할 수 있도록, username 고유의 npm 명령어를 사용할 수 있도록 해 줬다고 보면 될 것 같습니다.

 

node.js는 npm이라는 노드의 패키지 관리자 프로그램을 이용하여 매우 간단하게 프로젝트의 베이스를 생성하고 관리할 수 있게 해줍니다.

npm은 Node Package Manager를 의미합니다. 간단하죠?

 

위와 같은 상태에서 node 인터프리터를 이용 – Express Framework를 통해 3000번 포트를 이용하는 웹 프로젝트를 하나 만들어 보겠습니다.

 

웹 프로젝트에 앞서, node를 사용하는 웹 프로젝트는 다음과 같은 과정을 거쳐야합니다.

  1. npm init 명령 수행 : 현재 디렉토리를 웹 프로젝트의 root로 초기화한다. (package.json 파일 생성)
  2. npm install express 명령 수행 : npm을 이용하여 express 프레임워크를 설치한다. (/node_modules에 관련 파일이 설치됨)
  3. app.js 생성 : node 인터프리터를 통해 제일 먼저 읽어들일 파일을 생성한다.

 

위에 기재한 순서대로 노드 패키지 매니저를 통해 현재 디렉토리를 초기화합니다. 작업 디렉토리는 c:/test로 하겠습니다. 다음의 명령어로 c:의 루트로 이동하여 test 디렉토리를 만들고 그 안으로 이동합니다. 그리고 npm init 명령을 실행시킵니다. 초기화 후 express 모듈을 설치합니다.


cd / & md test & cd test

npm init

npm install express

 

npm init 명령어를 수행하면 아래와 같이 내용을 물어봅니다.

 

name: (test)
version: (1.0.0)
description:
entry point: (index.js)
test command:
git repository:
keywords:
author:
license: (ISC)
About to write to C:\test\package.json:

{
“name”: “test”,
“version”: “1.0.0”,
“description”: “”,
“main”: “index.js”,
“scripts”: {
“test”: “echo \”Error: no test specified\” && exit 1″
},
“author”: “”,
“license”: “ISC”
}
Is this ok? (yes)

모두 엔터를 쳐서 진행해주면, 입력한 내용을 토대로 c:\test 디렉토리에 package.json 파일이 생성됩니다.

 

이후, c:\test에 app.js 파일을 하나 만들어줍니다.

내용은 다음과 같이 입력해 주세요.


var express = require('express');
var app = express();

app.get('/', function (req, res) {
 res.send('Hello World!');
});

app.listen(3000, function () {
 console.log('Example app listening on port 3000!');
});

 

DOS 사용 경험이 있는 분이라면, c:\test에서 바로

copy con app.js 엔터 후 위 코드 복붙 하신 뒤 Ctrl+Z를 눌러 파일을 생성하시면됩니다.

모르시겠으면 윈도우 탐색기에서 해당 디렉토리로 이동하여 파일을 작성해주세요.

 

 

이제 node 인터프리터를 통해 app.js 파일을 실행합니다.

 

c:\test>node app.js

Example app listening on port 3000!

 

 

웹브라우저를 하나 띄운 뒤, localhost:3000 입력 후 엔터를 칩니다.

helloworld

 

끝!

완전 마법과도 같은 간단함이네요..

 

코드를 간단히 확인해봅니다.

1. var express = require(‘express’);

require라는 메소드의 인자로 String 값인 ‘express’를 넣어줬네요. 이 명령을 통해 express 모듈을 express 변수에 담아 사용할 수 있도록 해주게 됩니다.

 

2. var app = express();

위에서 인스턴시에이트 한 express라는 변수를 호출한 결과를 app이라는 변수에 담았습니다.

 

3. app.get(‘/’, function (req, res) {
res.send(‘Hello World!’);
});

app 변수의 .get 메소드를 통해 컨트롤러의 역할을 해주는 것 같네요.

get 메소드는 2개의 인자를 받아줍니다. 첫번째는 맵핑시킬 URL 패턴, 두번째는 인자를 두개 가지고 있는 function인데, 첫번째 인자는 요청, 두번째 인자는 응답으로 바인딩됩니다. res 인자의 send 메소드를 통해 해당 문자열을 body에 바로 출력시켜주는 것을 확인했습니다. 실제로는 헤더 설정부터.. 뭐 여러개를 하게 되겠네요.

최종적으로 웹브라우저는 / 요청에 대한 응답으로 <html><head></head><body>Hello World!</body></html> 이런 HTML 문서를 받게 됩니다.

4. app.listen(3000, function () {

console.log(‘Example app listening on port 3000!’);
});

get 메소드를 통해 URL Mapping을 해 놓았다면, 마지막에는 listen메소드를 통해 첫번째 숫자 인자를 port번호로 하는 웹서버를 띄우게 됩니다! 그리고 띄웠음을 확인한 뒤 수행되는 두번째 인자인 콜백함수를 통해 이 스크립트를 실행시킨 곳에서 실행 결과를 확인할 수 있도록 하는 메시지를 출력해주는 것을 확인했습니다.

 

자바로 스프링에 묶고 의존성 설정들 해주고.. 이것저것 하다보면 시간이 꽤 필요한데, node.js는 정말 엄청나게 간단하네요.. 열심히 배워서 어서 ES6랑 앵귤러 JS를 함께 사용해보고싶다는 생각을 하게 됩니다!

 

이제 저도 Hellow World!를 본 소감을 이곳에 정리할 겸 남겨 놓았으니, 다음 내용들에 대해 또 찾아 공부하러 가야겠네요. 다음 글은 실제 CRUD 프로젝트를 적용하는 과정에 대해 적을 수 있도록 해보겠습니다.

You may also like...

댓글 남기기

이메일은 공개되지 않습니다. 필수 입력창은 * 로 표시되어 있습니다.