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 입력)
- 웹 브라우저 화면