Node.js

Hanbin Lee·2021년 5월 22일
0

codestates

목록 보기
4/7

node.js

node.js란?

Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임이다.

즉, 자바스크립트를 기계어로 컴파일 해주는 엔진으로 빌드된 자바스크립트가 구동중인 환경이다.

이벤트 기반의 논블로킹 I/O 모델

node.js는 이벤트 기반의 논블로킹 I/O 모델이다.

이벤트란?
버튼의 클릭이나 네트워크 리소스를 요청 하는 것 등을 이벤트라 한다.
블로킹이란?
다음 함수의 실행이 현재 함수의 종료 이후에 이루어 지는 것.
논블로킹이란?
다음 함수의 실행이 현재 함수의 종료를 기다리지 않는 것.
I/O 모델이란?
input을 주면 output을 반환하는 모델

따라서, 이벤트 기반의 논블로킹 I/O 모델이란?

이벤트가 논블로킹으로 이루어지는 I/O 모델이다.

즉, node.js란?

JavaScript를 컴파일 하여 구동하고, 이벤트 기반의 논블로킹 I/O 모델로 속도가 빠르다.

별로 설치하지 않아도 node.js상에서 사용할 수 있는  모듈이 있다.

모듈

node와 함께 번들링 되어있는 모듈을 require("") 방식으로 사용.

  • ex) fs, http, url, path
const fs = require('fs')
const http = require('http')

fs.readFile('./something.json',(err,data)=>{
    console.log(data);
})

http.get('http://localhost:5000/api',(res)=>{
    console.log(res)
})

package.json

하나의 프로그램은 다양한 모듈들이 합쳐져서 만들어진다.
"바퀴를 재발명 하지마라"라는 말이 있다.
즉, 모듈을 직접 만들어서 사용하지 않는데, 이는 프로그램을 개발할 때 마다 모듈을 만든다면 개발시간이 많이 걸리고, 모듈의 신뢰성이 낮기 때문에 프로그램 오류가 발생하기 쉽다.
그래서 다른 검증된 모듈을 끌어다가 프로그램 개발에 사용한다.
이러한 모듈을 node.js에서는 npm 모듈이라 부르며, 이에 대한 정보를 담아둔 곳이 package.json이다.

npm란?

node.js환경에서 외부 라이브러리를 다운로드 받는 여러 방법이 있는데, 그 중 대표적인 방법이 npm을 활용하는이다. npm은 NodePackageManager으로 일종의 앱스토어 같은 역할을 한다. 즉, 필요한 모듈을 다운로드 할 수 있는 모듈스토어이다.

package.json에는 프로젝트에 관한 정보, 프로그램의 실행 및 테스트 방법, 프로젝트에 사용된 모듈리스트의 정보가 담겨있다.
실제 모듈은 모듈리스트를 바탕으로 node_modules라는 디렉토리에 저장되어 있다.
따라서 프로젝트 코드를 넘겨줄때, 모듈까지 모두 넘겨줄 필요없이 package.json파일만 넘겨주고 필요한 모듈들은 npm를 사용해 직접 다운로드를 하면 된다.

dependency

package.json안에 있는 내용을 살펴보면 먼저 dependency 항목을 볼 수 있다. dependenciesdevDependencies가 있는데, dependencies는 해당 프로젝트가 실행 하기 위해 반드시 필요한 모듈의 항목이 적혀있다.
devDependencies는 실행과 관계는 없지만 프로젝트 개발 환경에 필요한 모듈의 항목이 적혀있다.

npm install을 사용하면 npm에 있는 모듈을 설치할 수 있는데,
—-save 옵션과 함께 사용하면 설치와 동시에 dependencies 항목에 추가된다. 생략도 가능하다.
$ npm install react --save 또는 $ npm install react
—-save-dev를 함께 사용하면 설치와 동시에 자동으로 devDependencies 항목에 추가된다.
$ npm install nodemon --save-dev

package.json 사용목적

package.json에 모듈 목록을 기술하는 이유는
보통 프로젝트는 혼자 개발하는 경우보다는 다양한 사람들과 협업으로 개발한다.
다른 사람에게 프로젝트를 넘길때, 어떤 모듈을 사용했는지 알려줘야 원할한 협업이 진행된다.
이러한 역할을 하는 것이 package.json이다.

profile
안녕하세요 백엔드 개발자 이한빈 입니다 :)

0개의 댓글