Node.js

송현섭 ·2023년 10월 12일
0

백엔드

목록 보기
1/15
post-thumbnail



Node.js 설치

  • Node.js 공식사이트 에서 Node.js를 전역으로 설치해 줌
    *기본 버전과 최신버전 둘 중 하나로 설치할 수 있는데 높은 호환성과 안정성을 위해서는 최신보다는 어느정도 입증이 되어있는 기존버전 설치가 더 효율적


  • 다운로드 한 노드는 터미널에서 node -v 명령어로 확인 가능




Node.js 란 ?

  • Chrome V8 JavaScript 엔진으로 빌드 된 JavaScript 런타임

  • Node.js는 서버사이트 스크립트 언어가 아닌 프로그램(환경)임

  • 즉 Node.js란 본래 웹브라우저에서만 동작하던 언어인 javascript를 브라우저 없이도 사용할 수 있도록 브라우저 환경에서 독립시킨 것

  • 특히 Node.js를 통해 javascript로 서버를 만들 수 있게 되면서 한 가지 언어로 전체 웹 페이지를 만들 수 있게 되어 개발의 확장성이 커짐
    *이전에는 웹에 표시되는 부분은 javascript로 만들고, 서버 부분은 다른 언어를 사용해서 만들어야만 했음






  • 터미널에서 node 입력 후 node 환경에서 수식을 입력하면 그 결과값을 도출해 주는 것을 통해 javascript 엔진이 node.js 안에서도 똑같이 구동되는 것을 확인가능
    *그러나 node.js 에는 브라우저의 정보를 담은 객체(ex. window)는 없기 때문에 브라우저 환경의 javascript와 완전히 똑같은 것은 아님!





브라우저에서 벗어난 Javascript(Node.js)

  • 폴더 내에 index.js 파일 생성 후 위와 같이 작성
    *이후 해당 문자가 제대로 출력되는 지 확인하려면 html 문서에 js파일을 src로 연결한 후 크롬을 열어서 개발자도구의 콘솔 창에서 확인해야 했음





  • 그러나 node 명령어를 이용해서 위와 같이 node index.js 명령어로 파일 자체를 불러오면 브라우저 환경이 아니더라도 이렇게 터미널 상에서 바로 출력되는 것을 확인 가능 (브라우저에서 독립됨)






Node.js 와 싱글 쓰레드

  • Node.js 는 javascript 처럼 싱글 쓰레드임

  • 따라서 위와 같은 코드를 Node로 실행하면 1번 작업, 4번 작업, 3번 작업, 2번 작업 순으로 실행됨





  • 쉽게 말해 우선 JS 엔진에는 Heap 와 Call stack 이 있음
    *Heap = 메모리가 할당이 되는 곳, 선언한 변수, 함수가 담겨져 있음

  • 코드가 실행될 때 해당 코드는 우선 Call stack에 들어감

  • 바로 처리되는 작업들은 그대로 바로 실행되고 Call stack에서 빠져 나감

  • 반면 Call stack에 들어오는 setTimeout 같은 함수들은 javascript 엔진이 아닌 브라우저에서 제공하는 API로, 이런 비동기 함수들은 Web API(node 의 경우 Node API)를 호출하여 해당 함수들은 Callback Queue로 넘어가서 대기상태가 됨

  • Event Loop는 Call stack 상태를 실시간으로 체크하여 Call stack이 비어있을 경우 Callback Queue에 들어온 순서대로 각 함수를 Call stack으로 보내 처리함







Node.js 와 싱글 쓰레드 - gif로 이해하기




1. 바로 처리되는 작업은 Call stack에서 바로 처리






2. 바로 처리되지 않는 작업은 비동기 처리됨 (이 경우 setTimeout은 web API를 호출하는 함수이기에 우선 web API(node 의 경우 Node API)로 넘어감)






3. 작업이 끝난 함수 (setTImeout의 경우 일정시간 기다린 후 실행되는) 는 web API(node 의 경우 Node API)에서 Callback queue 로 이동되고, Event loop는 Call stack이 비어있는지 여부를 체크 후 Callback queue에 있는 콜백함수를 Call stack으로 옮겨 처리








profile
막 발걸음을 뗀 신입

0개의 댓글

관련 채용 정보