node.js 섹션0

박예원·2023년 9월 19일
0

1.1 노드의 정의

노드

크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임
서버의 역할도 수행할 수 있는 자바스크립트 런타임
자바스크립트로 만든 프로그램들을 실행할 수 있게함
2008년 V8엔진 출시, 2009년 노드 프로젝트 시작
V8과 libuv를 내부적으로 포함

V8엔진: 오픈소스 자바스크립트 엔진 -> 속도문제 개선
libuv: 노드의 특성인 이벤트 기반, 논블로킹 I/O모델을 구현한 라이브러리

런타임

특정 언어로 만든 프로그램들을 실행할 수 있게 해주는 가상 머신의 상태
ex) 노드, 크롬, 엣지, 사파리, 파이어폭스


1.2 노드의 특성

이벤트 기반

이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식
ex) 클릭, 네트워크 요청, 타이머
이벤트 리스너: 이벤트를 등록하는 함수
콜백 함수: 이벤트가 발생했을 때 실행될 함수

논블로킹 I/O

오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게 하고, 나중에 오래걸리는 함수를 실행

프로세스 vs 스레드

프로세스: 운영체제에서 할당하는 작업의 단위. 프로세스 간 자원 공유X
스레드: 프로세스 내에서 실행되는 작업의 단위. 부모 프로세스 자원 공유O

싱글스레드: 주어진 일 하나만 처리. 논블로킹 모델로 일부코드를 백그라운드에서 실행.
멀티스레드: 에러 발생시 새로운 스레드 생성.

노드 프로세스는 멀티스레드. 직접 다룰수있는 스레드는 하나라서 싱글스레드라고 표현.


1.3 노드의 역할

서버로서의 노드

서버

네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램

클라이언트

서버에 요청을 보내는 주체
ex) 브라우저(클라이언트)가 길벗 웹사이트(서버)에 접속, 핸드폰(클라이언트)을 통해 앱스토어(서버)에서 앱 다운로드.

서버 외의 노드

ex) 웹 프레임워크: Angular, React, Vue, Meteor
모바일 앱 프레임워크: React Native
데스크탑 개발 도구: Electron(Atom, Slack, VSCode, Discord)


1.4 개발 환경 설정하기

노드, npm, VS Code 설치하기

설치완료

profile
안녕하세요.

0개의 댓글