[node.js] node.js와 npm 알아보기

Hyebin·2021년 4월 9일
1

node.js

목록 보기
1/6
post-thumbnail

node.js란?

node.js는 Chrome V8 JavaScript 엔진으로 빌드된 JavaScript 런타임(실행프로그램)이다.
node.js는 이벤트 기반의 논블로킹 I/O(input/output) 모델로 구성되어 속도가 빠르다는 장점이 있다.
웹 서버와 같이 확장성 있는 네트워크 프로그램 제작을 위해 만들어졌다.
벤처나 빠른 서비스를 하고자 할 때 node.js로 구성하는 것이 좋다.

node.js로 인해 자바스크립트를 브라우저 외에서도 사용이 가능해졌다. (컴퓨터에서 사용이 가능해졌다.)

node.js 공식사이트 바로가기

🔎 V8 엔진은 뭘까
구글 크롬의 V8 엔진은 C++로 작성된 웹 브라우저를 만드는데 기반을 제공하는 오픈소스 고성능 자바스크립트 엔진이다. 속도향상을 위해 인라인 캐싱(inline caching)과 같은 최적화 기법을 적용하였다. 쉽게 말해 자바스크립트를 기계어로 컴파일 해주는 역할이다.
🔎 런타임은 뭘까
프로그래밍 언어가 구동되고 있는 환경

node.js 시스템 구성

single Thread 기반의 Event loop가 돌면서 요청을 비동기 방식으로 처리하기 때문에 요청을 처리하면서 다음 요청을 받을 수 있다.

Node.js Core Library
Node.js Bindings
V8 libuv
오픈소스 비동기 I/O
자바스크립트 엔진

node.js로 할 수 없는 것(브라우저와 차이점)

  • node.js에는 DOM이 존재하지 않는다.
    이 말은 즉, window객체나 document객체가 존재하지 않는다는 것이다.
    window 객체가 없다고 전역변수가 없다는 의미는 아니다. node.js에서는 window 대신 global이란 키워드로 전역변수를 다루고 있다.

  • fetch API가 존재하지 않는다.
    서버 요청할 때는 다른 방식을 사용하게 된다.

npm과 package.json

node.js로 웹서버를 만들기 위해 다양한 npm module을 활용해서 개발한다.
npm이 뭔지 알아보자.

npm이란?

Node Package Manager의 약자로 외부 라이브러리를 다운받기 위한 다양한 방법중 하나가 npm이다. 필요한 module을 다운로드 할 수 있는 모듈 스토어라 할 수 있다.

앞으로 프로젝트에 필요한 module은 npm에서 다운받아 쓸 수 있다. module 다운은 npm 명령어를 통해 받을 수 있는데 package.json이 무엇인지 알아야할 필요가 있다.

npm init

해당 디렉토리를 npm을 쓰는 프로젝트로 정의한다.
init을 하면 package.json에 담길 정보를 편집할 수 있는 내용이 나오고, 완료시 package.json파일이 생성된다.

package.json?

package.json 파일에는 프로젝트 전반에 관한 정보들이 담겨 있다. 그 중 프로그램에 필요한 모듈이 무엇인지 모듈에 대한 정보도 명시되어 있다.

📌 여기서 주의할 점은 package.json에는 필요한 module에 대한 정보만 명시되어 있는 것이지 실제 module이 담겨있는게 아니라는 점이다.

프로그램 실행을 위한 실제 module은 node_modules라는 폴더에 담긴다.

package.json 구성

package.json 파일에는 어떤 내용들이 들어있는지 알아보자.
아래 그림과 같이 프로젝트에 관한 정보, script, dependency 등으로 구성되어 있다.

devDependency

devDependency 항목에는 프로젝트를 개발하는 환경에서 필요한 module들의 정보가 들어있다. key가 모듈 이름이고, 값이 버전이다.
실제 프로젝트 동작에 직접적으로 영향을 주지 않고, 개발을 위해 필요한 module이 명시된다.

dependencies

module들의 정보를 나타내는 점은 devDependencies와 같지만, dependencies에는 프로젝트가 돌아가기 위해 반드시 필요한 module의 정보가 명시된다.

예를 들어, underscore나 React 같은것이 담긴다.

❓ 프로젝트에 사용된 module의 정보들을 왜 기술할까❓
나 "혼자" 개발하는 프로젝트가 "아니기 때문"이다.
다른 사람이 프로젝트를 실행 시킬 때 어떤 모듈을 설치해야 작동되는지 알려주는 의미로 package.json에 정보를 명시해야한다.
결국 프로젝트는 다른 사람들과 함께 만들어가는 것이므로!!

script

scripts 항목은 CLI에서 사용가능한 명령어를 가진다. 이를 npm script라고 부른다.

scripts의 key가 명령어가 되어 npm으로 실행가능하다.

CLI에서 실행할 때에는 "npm run <스크립트 이름>" 실행하면 된다.

npm으로 다운받기

1) 프로젝트 진행할 때

npm install <module name>을 이용하면, npm에 있는 module을 설치할 수 있다. 이 때 --save 옵션과 함께 설치하면, 자동으로 devDependencies에 module 정보가 추가 된다.

2) 프로젝트 받아올 때

package.json에 프로젝트에 필요한 module을 명시하여 얻는 또 하나의 장점은 우리가 프로젝트 코드를 전달할 때 필요한 모듈까지 전달하지 않아도 된다는 것이다.

프로젝트 코드를 받아와 npm install 명령어를 사용하면 필요한 모듈들을 설치할 수 있다.

0개의 댓글