해당 글은 여기글을 참고했음을 밝힙니다. (원문 작성일은 2017. 7)


Node.js

Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다. Node.js 는 이벤트 기반, 논 블록킹 I/O 모델을 사용해 가볍고 효율적이다. Node.js의 패키지 생태계인 npm은 세계에서 가장 큰 오픈소스 라이브러리 생태계이기도 하다.


Node.js 로 할 수 있는 것들

  • 정적 파일 서버
  • 웹 애플리케이션
  • 메세지 미들웨어
  • HTML5 멀티 플레이어 게임용 서버
노드가 가장 빛을 발휘하는 곳은 실시간 웹 애플리케이션이라고 한다. 이유는 About Node.js 를 참고하자. 원문의 글을 해석하면, 아래와 같이 말하고 있는 듯하다.

노드는 확장 가능한 응용 프로그램을 개발하도록 설계되었다.
1
2
3
4
5
6
7
8
9
10
11
12
13
14
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}/`);
});
cs

아직 뭐가 뭔지 모르지만 복붙했는데, Hello World 라는 구문의 연결을 동시에 많이 처리할 수 있다고 한다. 서버와 연결되고 콜백메소드가 수행되지만 수행 작업이 없으면 노드는 sleep 에 빠진다.


스레드 기반의 네트워킹은 상대적이르 비효율적이며 사용하기가 어렵지만, 노드는 LOCK이 없으므로 프로세스를 Dead-Lock 할 걱정이 없고 I/O 를 직접 수행하지 않으므로 프로세스가 절대 차단되지 않기 때문이다. 결국 Nothing Blocks 은 scalable 한 시스템을 구축하기에 매우 이점이 있다고 한다.


npm

Node.js 기반의 JavaScript로 개발된 오픈소스를 모듈로 올려놓은 곳이다. 우리는 웹 개발에 필요한 모듈들을 npm 명령어를 통해서 쉽게 다운받고 사용할 수 있다.


설치

이제 공홈에서 다운받도록 하자.

(1) https://nodejs.org/en/download/ 해당 링크 클릭

(2) LTS (Recommended For Most Users) 버전을 다운

(3) 나는 윈도우 64비트이기에 거기에 맞게 다운받는다.



(4) 다운을 다 받고 난 뒤, 노드를 설치한다. 이후에 CMD 를 켜서 아래와 같이 버전이 나오는 것을 확인해야 한다. 다운이 잘 되었으면 아래와 같이 명령어를 입력하면 값이 제대로 찍히는 것을 확인할 수 있다. (환경변수 경로는 설정이 잘되어있는 것을 확인하였다.)



Node.js 테스트

.js 파일을 만들고 아래와 같이 작성하자. 파일명은 test.js 이다.

1
2
3
4
5
6
7
function sum(a, b){
 
    return a + b;
 
}
 
console.log('sum = ' + sum(12));
cs


이제 CMD 창에서 해당 .js 파일이 있는 곳으로 이동후 node test.js 를 입력하면 제대로된 값이 나타남을 확인할 수 있다.


NPM 테스트

npm 을 통해 특정 모듈을 다운받고 다운받은 모듈을 통해서 특정작업을 수행한다. .js가 있는 디렉토리를 이동하고 npm init -y 라는 명령어를 입력하면 해당 명령을 입력한 디렉토리에 package.json 이라는 파일이 생성된 것을 확인할 수 있다. 


package.json 은 아래의 내용을 말한다.

1
2
3
4
5
6
7
8
9
10
11
12
{
  "name""doubler",
  "version""1.0.0",
  "description""",
  "main""test.js",
  "scripts": {
    "test""echo \"Error: no test specified\" && exit 1"
  },
  "keywords": [],
  "author""",
  "license""ISC"
}
cs


프로제트에 대한 명세이면서 해당 프로제트의 이름, 버전, 사용되는 모듈등이 있고 의존성들에 대해서 관리할 수 있다. 만약 어느 오픈소스를 다운받을 때 package.json 만 있다면 해당 오픈소스가 의존하고 있는 모듈이 어떤 것인지 npm install 명령어로 한 번에 설치할 수 있다.


이로써, 기본적인 개념과 설치과정은 여기까지고 자세한 내용은 참고링크를 통해 확인하고 훨씬 더 좋은 양질의 글들은 인터넷에 있으니 거기서 살펴보길 바란다.

Posted by doubler
,