1. node.js

- 자바스크립트를 이용해서 서버를 만들수 있는 개발 도구

- 노드라고도 불림


2. node.js의 특징

1) 비동기 입출력(논블로킹 입출력, Non-Blocking I/O)

- 하나의 요청 처리가 끝날 때까지 기다리지 않고 다른 요청을 동시에 처리할 수 있음

2) 이벤트 기반 입출력(Event driven I/O)

- 이벤트 받아 콜백함수가 호출 되는 방식

3) 모듈과 패키지

- CommonJS 표준 스펙 준수: 자바스크립트 코드를 별도의 모듈 파일로 분리시키고 필요할 때 불러와 사용할 수 있는 방식이 정의되어 있음

- 모듈(Module): 메일이 되는 자바스크립트 파일의 일부 코드를 떼어 별도의 파일로 만든 것

- 패키지(Package): 여러개의 모듈을 합쳐 하나로 합쳐 놓은 것

- npm(Node Package Manager): 다른 프로그래머가 미리 개발하여 올려 둔 패키지를 찾아 설치하는 방법 제공


3. V8 엔진에서 동작하는 노드의 아키텍처

- 자바스크립트는 인터프리터(Interpreter)방식 사용: 속도가 느린 문제 발생 → 크롬의 v8엔진이 나오면서 해결됨

- v8(자바스크립트)엔진: 자바스크립트 코드를 네이티브 코드로 바꾼 후 실행 할 수 있음


4. node.js 설치

- brew를 통한 설치 사용

1) brew update

2) brew upgrade

3) brew install node

4) brew link node

5) 설치 후 버전 확인

[참고]

- LTS(Long Term Support) 버전: 서버 환경에서 안정적으로 동작하도록 지원하는 버전, 서버 운영시 안정성과 보안이 중요함

- Current 버전: 최신 기능이 포함된 버전, 새로운 기능을 추가하거나 기존 버그들을 우선적으로 수정하여 적용함, 최신 기능 사용시 설치함


5. eclipse에서 nodeclipse 설치

- eclipse에서 node를 실행하여 자바스크립트 파일에 있는 코드를 읽어와 해석하여 실행

- 결과는 콘솔에 출력되어 사용자가 볼수 있음


6. hello world 예제 실행

1) 소스코드

1
2
3
4
5
6
var http = require('http');
http.createServer(function handler(req, res) {
    res.writeHead(200, {'Content-Type''text/plain'});
    res.end('Hello World\n');
}).listen(1337'127.0.0.1');
console.log('Server running at http://127.0.0.1:1337/');
cs

2) 결과

- eclipse에서 실행시 콘솔 로그(서버 중지 시 console 오른쪽 상단 빨간색 정지버튼 클릭)


- 터미널에서 실행시 콘솔 로그 (서버 중지 시 ctrl + c 입력)


- 웹 브라우저 화면