1. Node.js 개요
1. Node.js 소개
: 2009년 Ryan Dahl 이 개발
: 자바 스크립트 언어, 크롬 V8 엔진
: 싱글 쓰레드, 비동기 I/O, 이벤트 기반 => 네트워크 애플리케이션에 적당함, 서버
: 서버는 디스크에 저장된 파일을 읽어야 되는데, 동기식 IO에서는 보통 멀티 쓰레드를 사용한다.
: 멀티쓰레드는 어려운데 노드는 비동기 I/O 이기 때문에 훨씬 쉽고, 성능이 좋다.
: 아톰도 노드 기반이다.
* 비동기 I/O
: 시간이 걸리는 I/O 에서...
: 하드디스크 접근, DB 서버, 네트워크를 통한 다른 서비스 접근 등...
: 동기식은 I/O가 끝날때까지 대기
: 비동기식은 I/O가 끝날때까지 대기하지 않음
* 비동기 I/O의 장점
: 성능상, 메모리 관리상 유리하다.
* Node.js의 장점
: 싱글쓰레드, 비동기 I/O, 간단한 구조의 경량 프레임워크와 풍부한 라이브러리
: 서버와 클라이언트에서 사용하는 언어가 같다
* Node.js 권장 분야
: 실시간 소셜 네트워크 서비스
: 데이터 중심의 서비스
: IoT 기기 연동
* 아키텍처
: 상위레벨 : 자바스크립트
: 로우레벨 : C
: 바인딩, v8 엔진, 쓰레드풀, 이벤트 루프
* 버전 구성과 지원
: Node.js 버전을 두단계로 진행
: 짝수버전(stable), 홀수버전(Unstable)
2. 프로그래밍 모델
: 동기(Synchronous)와 비동기(Asynchronous)의 차이는 무엇일까?
- 실행기 끝나고 다음 실행 - 실행 결과가 끝날때 까지 기다리지 않는다
* 콜백함수로 비동기를 구현한다.
5. 도큐먼트
* 모듈
: Node.js 간단한 구조, 필요한 모듈을 로딩
: 모듈 : 다른언어의 라이브러리에 해당
* 모듈
: 클래스, 메소드, 이벤트, 모듈함수
* 모듈로딩
: require('모듈이름') // 절대경로 혹은 상대경로
: 모듈 종류
: 기본모듈 - 설치 불필요 // 확장모듈 - npm으로 별도 설치
* 모듈로딩위치
: Node.js 라이브러리 디텍토리
: 확장모듈
: 같은폴더, node_modules 이름의 폴더, 상위 폴더의 mode_modules
* 모듈사용
1. 객체생성
2. 메소드 사용
* 이벤트
: 이벤트 - 이벤트 핸들러
: .on(이벤트이름, 리스너함수)
* 모듈함수
: 객체 생성 없이 모듈에 직접 사용
:
:
'프로그래밍 > Nodejs' 카테고리의 다른 글
HTTP 서버 (0) | 2017.04.16 |
---|---|
http 통신 (0) | 2017.04.16 |
흐름제어 - 콜백, Async모듈, Promise (0) | 2017.04.15 |
NPM을 이용한 모듈관리 (0) | 2017.04.15 |
Node.js 모듈 (0) | 2017.04.14 |