Node.js

Judo·2020년 12월 27일
1
post-thumbnail

Node.js?


자바스크립트를 컴파일 해주는 엔진(V8) 으로 빌드 된 자바스크립트가 구동중인 환경

  • V8 JavaScript 엔진
    • 자바스크립트를 기계어로 컴파일 하는 역할
  • 런타임
    • 프로그래밍 언어가 구동되고 있는 환경
  • 즉, 자바스크립트 코드를 작성하면 컴퓨터가 알아들을 수 있게 해주는 역할

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


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

  • 이벤트
    • 유저의 버튼 클릭
    • 네트워크에 리소스를 요청
  • 논블로킹
    • 블로킹 : 다음 함수의 실행이 현재 함수의 종료 이후에 이루어 지는 것(동기)
    • 논블로킹 : 다음 함수의 실행이 현재 함수의 종료를 기다리지 않는 것(비동기)
  • I/O 모델
    • input -> output
    • request -> response
  • Node.js는 JavaScript를 컴파일하여 구동하고, 이벤트 기반의 논블로킹 I/O 모델이다.

Node core modules


  • node와 함께 번들링 되어있는 모듈
  • require('') 방식으로 사용 가능
  • fs, http, url, path 가 있다.
const http = require('http')
const fs = require('fs'); // f
// 이렇게 사용!
  • 모듈이란?
    • 필요한 것만 불러오는 것. 탈부착 가능한 부품과 같은 것이라 생각

NPM


  • 세계에서 가장 큰 오픈소스 라이브러리 생태계 중 하나
  • 노드와 함께 번들링 되어 있는 것이 아니고, 따로 설치해야 한다.

Package.json


  • NPM을 활용하기 위한 정보들이 모여있는 파일

  • 프로젝트 전반에 관한 정보를 포함

  • 일반적으로 노드 모듈들은 git에서 제외되기 때문에, 노드모듈들이 넘어오지 않고 package.json에 있는 dependency를 바탕으로 npm을 이용해 다시 설치하는 것

npm 실행하기

% npm init
// 해당 폴더를 npm을 쓰는 프로젝트로 정의 
// package json 파일이 생성된다.

  • 위 사진과 같이 뜬다면 성공
  • 설정 완료 후엔 package.json 파일 생성

다음으로 index.js 파일 생성하고 아래와 같이 코드를 입력한다.

//index.js
console.log('hello world');

이후 터미널에 node index.js를 입력

위에서 package.json은 프로젝트에 관한 정보가 들어있다고 했는데 해당 파일안에 있는 scriptsnpm에서 사용할 수 있는 명령어가 나열되어 있다.
이 명령어를 활용할 수 있다.

npm start를 터미널에 입력하면 node index.js를 입력했을 때와 동일하게 출력된다.

nodemon

  • 디렉토리의 파일 변경이 감지되면 노드 애플리케이션을 자동으로 다시 시작하는 도구
  • http 서버를 켰을 때 변경 사항을 바로바로 반영해서 서버를 킬 수 있다.

nodemon 설치하기

npm install --save nodemon

설치하면 package.jsondependencies에 추가된다.

이제 package.jsonscripts를 변경하여 nodemon을 실행해본다.

위와 같이 start를 변경하면 npm start를 터미널에 입력했을 때 index.js 파일에 변경사항이 있을 때마다 다시 시작하는걸 볼 수 있다.

console.log('zzz') 를 추가

profile
즐거운 코딩

0개의 댓글