NodeJS & NPM

Jiwon Yoo·2023년 2월 24일
0

프론트엔드

목록 보기
9/38

NodeJS란?

구글 V8 자바스크립트 엔진으로 확장성 있는 네트워크 애플리케이션 개발에 사용되는 소프트웨어 플랫폼이다. 작성 언어로 JavaScript를 사용한다. 내장 HTTP 서버 라이브러리를 포함하고 있어 웹 서버에서 아파치 등의 별도의 소프트웨어 없이 동작하는 것이 가능하고, 이를 통해 웹 서버의 동작에 있어 더 많은 통제 또한 가능하다.

장점

  1. *단일스레드 이벤트 루프 기반 비동기방식( Non-Blocking I/O)을 통한 높은 처리 성능
    • 멀티 스레드 방식에 비해 적은 컴퓨터 자원을 사용
    • I/O 작업이 많은 서버로 적합 ex) 게시판 형태 같은 웹 서비스
  2. 웹 서버가 내장되어 있어 별도의 웹서버를 설치할 필요가 없음
  3. 자바스크립트를 사용하기 때문에 JSON 형식과 쉽게 호환
  4. npm을 이용해 자신이 필요한 라이브러리와 패키지를 검색해서 설치하고 사용할 수 있기 때문에 개발 속도와 효율성이 크게 향상

단점

  1. 이벤트 기반 비동기방식이라 서버단 로직이 복잡한 경우 콜백 함수의 늪에 빠질 수 O
  2. 단일 스레드(Single Thread)이기 때문에 하나의 작업 자체가 많이 걸리는 웹서비스에는 적합 X
  3. 코드가 수행되어야 코드에 에러가 있는지 알 수 있으며, 에러가 날 경우 전체적으로 작동 X

*단일스레드 이벤트 루프 기반 비동기방식(Single Thread Event Loop Non-Blocking I/O)

  • 여러 이벤트가 동시에 발생했을 때 어떤 순서로 콜백 함수를 호출 할지를 이벤트 루프가 판단. 노드는 이벤트가 종료될 때까지 이벤트 처리를 위한 작업을 반복
  • 하나의 스레드가 request를 받으면 바로 다음 처리에 요청을 보내놓고 다른 작업을 처리하다가 먼저 요청한 작업이 끝나면 이벤트를 받아서 응답
  • 동시 request가 오더라도 처리가 완료될 때까지 기다리지 않아도 되기 때문에 서버 부하가 적음

NPM: Node Package Manager

NodeJS에서 사용할 수 있는 모듈들을 패키지화하여 모아둔 저장소 역할을 하며 설치/관리를 수행할 수 있는 CLI를 제공한다. 또한 자바스크립트 라이브러리를 설치하고 관리하는 패키지 매니저이기도 하다.이때 이 패키지들이 서로 의존되어 있어서 하나의 문제가 발생하면 다른 것들까지 영향을 받을 수 있는데, 이를 관리하기 위해 package.json 파일로 프로젝트의 정보와 패키지들의 의존성을 관리한다.

package.json

프로젝트의 정보를 정의하고, 의존하는 패키지 버전 정보를 명시하는 파일로 일반적으로 루트 디렉토리에 위치한다. 크게 프로젝트 정보와 패키지 정보로 나누어져있다.

  1. 프로젝트 정보 - name, version 영역
    package.json 파일은 반드시 name과 version 항목을 포함해야함
    name: 소문자 한 단어. 하이픈( - )과 언더스코어( _ )가 포함될 수 있음
    version: x.x.x 형식을 따라야 하며, 작성 규칙을 시맨틱 버저닝이라고 함

  2. 패키지 정보 - dependencies 또는 devDependencies 영역

  • dependencies: 프로덕션 환경에서 응용 프로그램에 필요한 패키지
  • devDependencies
    로컬 개발 및 테스트에만 필요한 패키지
profile
새싹 개발자 🌱

0개의 댓글