Notice
Recent Posts
Recent Comments
Link
HANA -J
TIL -2021/11/16 본문
>항해 3주차 node.js 기초학습
1. Node.js ?
- 노드는 자바스크립트 런타임환경이다. 웹서버와 같은 확장성 있는 네트워크 프로그램을 제작하기 위해 사용된다.
- 서버가 아니다! 서버의 역할을 수행할 수 있을 뿐 , 서버 실행을 위해 http/https모듈을 제공한다.
- Express라는 웹 프레임워크를 표준처럼 사용한다.
- npm(node package manager)를 통해 패키지를 관리할 수 있다.(현재는 node.js 를 다운받으며 자동으로 설치가 된다.
2. Node.js 특징
- 이벤트 기반 : 이벤트가 발생할 때 미리 지정해둔 작업을 수행한다.
- 논블로킹 : 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래 걸리는 함수를 실행한다. >논 블로킹 방식의 일부 코드는 백그라운드에서 병렬로 실행된다. I/O 작업이 많을 때 노드 활용성이 매우 좋다.
- 프로세스 vs 스레드 개념
> 프로세스 : 운영체제에서 할당되는 작업의 단위로 메모리에 올라가 실행되고 있는 프로그램의 인스턴스이다. 프로세스간 자원 공유 X
> 스레드 : 프로세스 내에서 실행되는 작업의 단위로 부모프로세스의 자원을 공유한다.
- 노드 프로세스는 멀티스레드이지만 동시에 스레드를 다룰 수 없기 때문에 싱글스레드라고 표현한다.
- 싱글스레드지만 논 블로킹모델로 구성되어, 비동기 I/O작업을 통해 동시에 많은 요청들을 비동기로 수행한다. (하지만 I/O관련 코드가 아닌 경우에는 싱글스레드, 블로킹모델과 같이 작동한다.)
3. 노드서버의 장단점
장점 | 단점 |
멀티스레드 방식에 비해 컴퓨터 자원을 적게 사용 | CPU 작업이 많은 서버로는 별로다 |
I/O작업이 많은 프로그램 서버로 좋다 | 싱글스레드이므로 그 스레드가 멈추지 않게 관리해야한다 |
웹 서버가 내장되어 있다 | |
자바스크립트 언어를 사용 | |
JSON 형식과 호환쉬움(다른 언어에 비해) |
4. Express
> 기본적으로 기능에 따라 디렉토리를 나누어작업
- app.js : 핵심 서버 스크립트 (index.js 또는 server.js로도 사용)
- public : 외부에서 접근 가능한 파일들( 이미지, css,등등)
- views : 템플릿 파일
- routes : 서버의 라우터와 로직 (url연결, crud등등 비즈니스로직)
- models : 데이터베이스 연결
728x90
'what I Learnd > TIL' 카테고리의 다른 글
TIL -TDD (0) | 2021.11.27 |
---|---|
TIL - 2021/11/24 (0) | 2021.11.24 |
TIL - 2021/11/13 (0) | 2021.11.13 |
TIL - 2021/11/12 (0) | 2021.11.12 |
TIL -2021/11/11 (0) | 2021.11.11 |
Comments