오늘은 node.js에 대한 강의를 들었다.
Node.js의 설계
Node.js의 정의
- Javascript를 브라우저가 아닌 컴퓨터에서 브라우저 없이 실행하게 도와주는 환경입니다.
V8 엔진
- 구글이 개발하여 구글 크롬 브라우저에서 사용하는 자바스크립트 엔진입니다. Node.js에서 이 엔진을 활용함으로써, 우리는 브라우저 환경 이외에서도 자바스크립트를 사용할 수 있게 되었습니다.
libuv
- 비동기 작업인 회원가입의 정보 입력이나 이런 순간에 비동기 작업으로 흘러가는 순서를 동기작업으로 바꿔주는 역할을 한다. async/await과 같은 역할을 한다고 생각하면
Node.js의 특징
- 논 블로킹 I/O (Non-Blocking Input/Output)
●I/O는 데이터의 입력(Input) / 출력(Output)을 의미하며, 이는 여러분이 파일을 저장하거나, 불러오는 것을 “I/O 처리를 한다.” 라고 표현할 수 있습니다.
● 블로킹(Blocking) I/O: 한 번에 하나의 작업만을 처리할 수 있으며, 호출된 함수가 자신의 작업을 모두 마칠 때 까지 호출한 함수에게 제어권을 넘겨주지 않습니다.(예를 들어, 파일을 읽는 동안에는 다른 작업을 함께 수행할 수 없습니다.)
● 논 블로킹(Non-blocking) I/O: 시스템 호출이 완료되기를 기다리지 않고 바로 다음 작업으로 즉시 넘어갈 수 있는 방식이므로 호출된 함수는 작업의 완료 여부와 상관없이 즉시 제어권을 호출한 함수에게 반환합니다.
(예를 들어, 파일을 읽는 동안에도 동시에 연산을 하는 것처럼 다른 작업을 함께 수행할 수 있습니다.)
-싱글 스레드(Single thread)
● 스레드란 ? 프로그램이 동작할 때, CPU나 프로세서를 사용하는 단위(ex)스레드를 여러개 사용할경우 여러가지의 작업을 동시에 함)
● Node.js의 경우 싱글 스레드 즉 하나의 단일 스레드를 사용하지만 I/O작업이 발생할 경우 비동기적으로 작업을 처리하여, 여러가지 작업을 동시에 처리 가능
●싱글스레드의 장점의 경우 스레드 생성의 관리에 대한 부담을 줄이고, 여러스레드가 동시에 공유하는 자원에 접근하는 문제인 Race condition을 방지할 수 있다.
-호출스택(Call Stack)
●Javascript에 코드를 실행하면 호출 스택에 해당하는 함수를 추가하고 함수가 완료되면 호출스택에서 제거(Pop)시키는 형태를 가지고있다.
●비동기작업때 호출스택이 함수가 끝날 때까지 기다리는 것을 막기 위해서 node.js에서는 이벤트루프(event loop) 와 이벤트 큐(event queue)를 사용한다.
-이벤트 루프(Event Loop)
● 이벤트 루프는 JavaScript의 비동기 작업이 동기작업이 되도록 비동기 작업들을 모아서 관리하고 순서를 정해주는 도구이다
● 이벤트 루프를 활용하면, 자바스크립트는 시간이 오래 걸리는 작업을 이벤트 큐에 넣어 비동기적으로 처리하고, 그 동안 호출스택에서는 다른 작업을 처리할 수 있다.
패키지 매니저(Package Manager)
-Node.js에서 코드의 재사용성을 높이기 위해 작성된 독립적인 코드 조각을 “모듈”이라고 하는데, 이런 모듈을 패키지 매니저를 통해 공유하기 위해 만든 것을 패키지라고 한다.
-패키지매니저는 패키지를 손쉽게 다루는 작업을 안전하고, 편리하게 사용하기 위해 만든 툴이다. 패키지의 설치, 업데이트, 삭제등을 할 수 있고, 패키지간의 의존성을 관리해준다.
-Node.js의 대표적인 패키지 매니저는 npm, yarn이 있다.
npm
-npm은 node package manager로 가장 기초적인 패키지 매니저이다.
-누구나 쉽게 이용 가능하다.
yarn
-npm의 부족한 부분을 보완하여 페이스북에서 제작한 편리한 기능과 보안 성능이 향상된 패키매니저이다.
-패키지 설치 속도가 빠르다.
npm과 yarn을 동시에 사용할 시 버전이 달라서 오류가 발생할 수 있음
package.json이란
-node.js 프로젝트의 가장 핵심적인 파일이고, 프로젝트에 대한 정보와 설치한 패키지들의 버전을 관리할 때 사하는 파일이다.
-동일한 패키지라도 버전에 따라 기능이 다르기 때문에 특정 버전을 설치하고 관리해야 할 때 필요하다.
- pakage.json에는 프로젝트명, 작성자, 라이센스 정보등의 일반적인 프로젝트 정보 뿐만 아니라, 스크립트를 실행 할 수 있는 필드 또한 포함되어있다.
package-lock.json 또는 yarn.lock이란
-lock 파일에는 package.json에서 정의한 파일 이외에도 모듈에 들어있는 패키지들의 버전과 의존 관계의 정의된 파일을 가지고 있다.
yarn 설정하기
-yarn 설치하기
●터미널에 npm install -g yarn을 입력하여서 yarn을 설치한다.
-yarn 시작하기
●새로운 프로젝트나 패키지를 만들때 yarn init을 통해 해당 하는 패키지를 제작할 수 있다.
다음과 같은 정보를 가지고 있음
●yarn add기능을 통해서 패키지를 설치할 수 있다. (ex : yarn add express => express란 패키지를 설치한다.)
node_modules 파일안에 add한 패키지한 정보가 들어간다. 이 node_modules는 윈도우나 맥환경에 따라 다르기 때문에 공유하기 힘들다. 그래서 공유할때는 node_modules 파일을 지우고 공유함
-yarn 명령어
yarn을 입력하면 해당하는 yarn.lock과 pakage.json을 기반으로 패키지를 다운받는데 위의 말과 이어서 node_modules파일을 지운 공유 파일을 사용할 경우 yarn명령어를 통해 해당하는 node_modules패키지를 다운받을 수 있다.
npm과 yarn 명령어 정리
'코딩 > Javascript' 카테고리의 다른 글
[TIL 15일차 - 3]모듈(module) (0) | 2024.05.13 |
---|---|
TIL 15일차 - 2) Express.js 를 이용한 백엔드 서버 개발 (0) | 2024.05.13 |
TIL 14일차 (페이지네이션, 비밀번호조건 추가) (0) | 2024.05.08 |
TIL 13일차(사이드바를 이용한 UI적용) (0) | 2024.05.07 |
TIL 12일차(콜백함수) (1) | 2024.05.02 |