Node.js 및 Package.json

Front-end Dev. Hyuk·2020년 8월 28일
0

Node.js

목록 보기
1/2

Q. What is Node.js?

노드는 Chrome v8 JavaScript 엔진으로 만들어진 자바스크립트 런타임이다. = 자바스크립트를 기계어로 컴파일 해준다!

Q. What is runtime?

프로그래밍 언어가 구동되고 있는 환경.

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

Q. 이벤트 기반 및 논블로킹 I/O 모델

유저의 클릭이나 네트워크에 리소스를 요청하는 이벤트가 논블로킹으로 이루어지는 Input Output model.

I/O model : Input을 주면 Output을 반환하는 모델이다.

Q. 이벤트

유저의 버튼 클릭이나 네트워크에 리소스를 요청 하는 것 등

Q. 논블로킹 vs 블로킹

블로킹 : 다음 함수의 실행이 현재 함수의 종료 이후에 이루어 지는 것.

논블로킹 - 다음 함수의 실행이 현재 함수의 종료를 기다리지 않음. (비동기식)

그래서 Node.js 는 다음과 같다.
JavaScript를 Compile 하여 구동하고 이벤트 기반의 non blocking 모델로 속도가 빠르다.

Q. Node core modules

별도의 설치를 하지 않아도,(Packaging을 하지않아도) node 상에서 쓸 수 있는 모듈이 있다.
node 와 함께 번들링 되어있는 모듈이며 require('')방식으로 사용 할 수 있다. ex) fs, http, url, path
fs는 readFlie 을 통해 읽어들일 수 있다. http는 get 을 이용하여 사용할 수 있다.

Q. NPM (Node Package Manager)

Node를 쓰게 되면 빼놓을 수 없는 Node Package Manager가 있다. 세계에서 가장 큰 오픈소스 라이브러리 생태계 중 하나이다.

Q. Package.json?

npm을 활용 하기 위한 정보들이 모여 있는 파일이며, project 전반에 관한 정보가 들어있다.

Q. run script?

Cli 에서 해당 코드를 실행 시킨다.

Q. dev-dependency

production과 관계 없는 개발만을 위한 dependency, 설치시 --dev 옵션을 줘서 등록한다.

$ yarn add @babel/core --dev

$ npm install @babel/core --save-dev

dependencies에는 직접 production과 관련 있는 dependency는 꼭 --save 옵션을 줘야한다.

$ yarn add react

$ npm install --save react

Q. Why save?

우리가 흔히 하는 npm install은 package.json에 있는 dependency를 바탕으로 설치하게되는데 실제로 git module들은 git 상에서 제외되는것이 일반적이기 때문에 모든 모듈들이 실제로 오는것이 아니라 페키지닷 제이슨을 바탕으로 엠피엠이 다시 설치하는것이다. 그런데 만약 dependency에 등록 되어 있지않다면?

코드에서는 해당 모듈을 쓰고 있지만 npm install로는 설치 되지 않았기 때문에 에러가 나오는 상황이 될것이고 그렇게 되면 협업작업을 할때 팀 갈등의 주요 원인이 될것이다.

시작을 했는 데 만약 nodemon을 사용하고 싶다면 ? script 코드를 바꿔야 한다

nodemon

일반적으로 일회성으로 켜지고 종료하는 식으로하는데 저장상황을 반영해서 즉각적으로 실행시켜주는 라이브러리이다.

npm install --save nodemon 으로 설치가 가능하다.

profile
The Known is finite The unknown is infinite.

0개의 댓글