[18] Node.js 설치, 역할, 특징, npm 사용하기

minjeong·2024년 2월 1일
0
post-thumbnail

시작하기 전에...Node.js는 폴더를 구조적으로 만드는 것이 매우 중요하다. 폴더명도 직관적으로 하고, 폴더 위치들도 구조적으로 잘 짜야한다!

폴더 하나하나를 만들고 그걸 npm적용 시켜줄 때 늘, 터미널에서 npm init -y를 해주자!(한번에 적용가능)
만약, package.json안의 내용 중 고칠게 있으면 직접 파일에 들어가서 고쳐도 되고 처음에 터미널에서 적용시켜줄때, npm init 만 하면 하나하나 고칠 수 있다.

서버를 시작할때는 폴더안에 내용이 수정될때마다 새로 시작해줘야한다.
터미널에서 node [파일명] 하고, 웹페이지 새로고침 하면 최근작업한 것 까지 보여진다.
서버를 중단하려면 control + c 하면 된다.

1. Node.js

  • 구글 크롬의 자바스크립트 엔진에 기반해 만들어진 Javascript 런타임
  • 이벤트 기반, 비동기 I/O 모델을 사용해 가볍고 효율적이다.
  • npm 패키지는 세계에서 가장 큰 오픈 소스 라이브러리

📌 런타임?
프로그래밍 언어가 구동되는 환경
원래는 javascript의 런타임 환경은 웹 브라우저만 존재 했었지만, 이를 가능케 하기 위해 나온 것이 node.js 이다.

1-1. Node.js 설치

(1) 윈도우

https://nodejs.org/en
접속해서 LTS 버전으로 다운받으면 된다.

(2) MAC
2-1. HomeBrew 설치
터미널에서 아래 코드를 복붙만 하면 된다.

/bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

2-2. Node.js를 설치
터미널에서 입력

brew install node

2-3. Node.js 버전확인
잘 설치되었는지 확인하기 위해서 버전 확인을 해보면 된다.
위아래 두개 다 각각 따로 입력해보면 된다!

node -v
npm -v

📝 npm이란?

  • Javascript로 개발된 각종 모듈의 설치, 업데이트 구성, 제거 과정을 자동화하여 관리해주는 기능이다.
  • 노드 패키지를 관리해주는 틀

npm 사용하기

(1) npm init : 프로젝트 시작할때 명령어, 문답식으로 입력함
(2) npm init --y : package.json이 생성될때 기본값으로 생성한다.
(3) npm install 패키지이름 : 프로젝트에서 사용할 패키지를 설치하는 명령어, 설치된 패키지의 이름과 정보는 package.jsondml dependencies에 입력된다.

🖊️ package.json란?

  • node.js 설치를 완료하면, 이 파일이 자동으로 생성되는데 이건 뭘까?
  • 패키지들이 서로 의존되어 있어, 문제가 발생할 수 있는데 이를 관리하기 위해 필요한 것
  • 프로젝트에 대한 정보와 사용중인 패키지 이름 및 버전정보가 담겨 있는 파일이다.

1-2. Node.js의 역할

(1) 간단한 로직
(2) 대량의 클라이언트가 접속하는 서비스(입출력이 많은 서비스)
(3) 빠른 개발 요구
(4) 빠른 응답시간 요구
(5) 비동기 방식에 어울리는 서비스(스트리밍 서비스, 채팅 서비스 등)

1-3. Node.js의 특징

(1) 자바스크립트 언어 사용
(2) Single Thread

  1. 프로세스
  • 실행 중인 프로그램
  • 운영체제에서 할당하는 작업의 단위

2.Thread(스레드)

  • 프로세스 내에서 실행되는 흐름의 단위
  • 하나의 프로세스에는 n개의 스레드가 존재하며 동시에 작동할 수 있다.
  • Singel Thread
    - Node.js에선 사용자가 직접 제어할 수 있는 스레드는 하나이다.
  • 싱글스레드라 주어진 일을 하나밖에 처리하지 못한다.
  • Non-blocking I/O 기능으로 일부 코드는 백그라운드에서 실행 가능
  • 에러를 처리하지 못하는 경우 멈춘다.
    --> 에러를 처리하지 못하면 프로그램이 아예 중단되어버려서 큰 문제 발생가능!

(3) Non-blocking I/O
동기 ( Synchronous )
• 데이터의 요청과 결과가 한 자리에서 동시에 일어나는 것
• 시간이 얼마가 걸리던지 요청한 자리에서 결과가 주어진다.
• 한 요청에 서버의 응답이 이루어질 때까지 계속 대기해야 한다.
비동기 ( Asynchronous )
• 동시에 일어나지 않는 것
• 요청한 후 응답을 기다리지 않고 다른활동을 한다.
📌 I/O 작업 : 파일 시스템 접근 ( 읽기, 쓰기, 만들기 등 ), 네트워크 요청
📌 Node.js는 표준 라이브러리의 모든 I/O 메서드를 비동기 방식으로 제공한다.
(4) 비동기적 Event-Driven
Event-Driven : 이벤트가 발생할 때 미리 지정해둔 작업을 수행
Ex) 클릭, 네트워크 요청, 타이머 등
이벤트 리스너 (Event Listener) : 이벤트 등록 함수
콜백 함수 ( Callback Function ) : 이벤트가 발생했을 때 실행되는 함수


마무리

이제 Node.js 에 본격적으로 입문했다! 이번엔 설치하는 방법과 개념에 대해서만 다뤘고 다음 파트부터는 모듈에 대해서 다뤄볼 예정이다.

profile
중요한 건 꺾여도 다시 일어서는 마음

0개의 댓글