본문 바로가기
Web/Node.js

[node.js] 기초

by 오우영 2021. 2. 24.

node.js

  • 노드는 Javascript의 runtime입니다. 즉, Javascript program을 실행가능 하게 함
  • 브라우저에서만 실행되었던 자바스크립트를 독립형 응용 프로그램으로 실행시킬 수 있도록 확장
  • Event-driven 방식으로써, 비동기 방식으로 동작
  • Chrome의 Javascript Engine에서 Runtime bulid가 된 후 동작
  • npm이라는 오픈소스 라이브러리 있음

 

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

node.js에는 DOM이 존재하지 않습니다.

node.js에는 브라우저와는 달리 window 객체, document 객체가 존재하지 않습니다. window 객체 대신 global 키워드가 존재합니다. 다만 완전히 똑같지는 않습니다. 대부분 스코프 규칙이 모듈과 관련되어 있는 경우가 많습니다. 이 개념은 commonJS 와 관련이 있습니다.

또한 fetch API 가 node.js 에는 존재하지 않습니다. 서버에 요청할 때 다른 방식을 사용합니다.

 

 

npm (Node Package Manage)

node.js 환경에서 외부 라이브러리를 다운로드 받기 위해 다양한 방법이 존재하지만 그 중 대표적인 것은 바로 npm입니다. 필요한 모듈을 다운로드 할 수 있는 모듈들이 모여있는 모듈 스토어입니다.

 

package.json

하나의 프로그램은 다양한 모듈이 합쳐져서 만들어집니다. 우리가 개발할 때 모든것을 다 만들어서 쓰지 않습니다. 우리보다 잘하는 사람들이 만들어놓은 검증된 코드(모듈)를 가져다가 사용합니다. 이러한 남이 만들어놓은 모듈을 node.js에서는 npm 모듈이라는 이름으로 부르며 이에 대한 정보를 담아둔 곳이 바로 package.json입니다.

 

 

 

 

devDependencies(의존성 모듈)

  • 프로그램 실행과 관계없는 오로지 개발을 위해 필요한 모듈
  • 실제 프로젝트 동작에 직접적으로 영향을 주지 않는 모듈들을 명시
  • $  npm install mocha --save-dev : --save-dev 옵션과 함께 install 실행시 자동으로 devDependencies에 추가됨

dependencies(직접 실행과 관련있음)

  • 프로젝트가 돌아가기 위해 반드시 필요한 모듈이 무엇인지 명시
  • $ npm install --save react : --save 옵션과 함께(생략 가능) install 실행시 자동으로 dependencies에 추가됨

 

우리가 흔히 아는 npm install은 package.json에 있는 dependency(의존성 모듈)를 바탕으로 설치

  • package.json은 프로그램에 관해 모르는 사람이 해당 프로그램을 개발할 수 있도록 안내해주는 역할을 함

 

dependency에 등록되어 있지 않을경우

  • 코드에서는 해당 모듈을 쓰고 있지만 npm install로는 설치되지 않는다
  • 무엇을 설치해야 하는지도 몰라 팀 갈등의 주요 원인이 되기도 한다

 

scripts 항목

  • CLI에서 사용가능한 명령을 기술합니다. 이를 npm script라고 부릅니다.
  • npm run <스크립트이름>으로 실행 가능
  • 주로 실행, 테스트, 코드 검사(lint) 등을 기술합니다.

 

common JS

  • 모든 모듈은 자신만의 독립적인 실행 영역이 있어야 함 (독립적인 파일로 나누어 놓은 것을 모듈화라고 함)

 

 

기본 사용법

  • const 모듈이_담긴_변수 = require('모듈이름')

다른 스크립트를 불러올 때

  • const module2 = require('./script2.js) //script1.js

모듈로 노출시킬 때

  • module.exports = 'this is module 2'
  • module.exports 대신에 exports 를 사용할 수도 있습니다. exports는 일종의 축약형입니다. module.exports를 참조합니다.

외부 스크립트를 require 구문을 이용해 두 번 불러올 경우, 외부 스크립트는 한 번 실행됩니다.

 

 

댓글