HANA -J

TIL -2021/11/16 본문

what I Learnd/TIL

TIL -2021/11/16

Hana-J 2021. 11. 17. 00:21

>항해 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