ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • [포스코x코딩온] Node.js의 기본 개념 및 시작
    [포스코x코딩온] 웹개발자 풀스택 부트캠프8기 2023. 7. 27. 23:01
    728x90

    Node.js

    • 구글 크롬의 자바스크립트 엔진(V8 Engine)에 기반해 만들어진 Javascript 런타임
    • 이벤트 기반, 비동기 I/O 모델을 사용해 가볍고 효율적
    • npm 패키지는 세계에서 가장 큰 오픈 소스 라이브러리
    • 런타임이란,
      • 프로그래밍 언어가 구동되는 환경
      • Javascript의 런타임 환경은 웹 브라우저만 존재했었음
        • javascript를 서버단 언어로 사용하기 위해 나온 것이 node.js
        • 웹 브라우저 없이 실행 가능
    • Electron : Node.js를 기반으로 JS, HTML, CSS를 사용하여 데스크톱 애플리케이션을 만드는 오픈소스 프레임워크

    Electron 활용 사례


    Node.js 설치 - 윈도

     

    Node.js

    Node.js® is a JavaScript runtime built on Chrome's V8 JavaScript engine.

    nodejs.org

    LTS가 안정화된 버전으로 LST로 다운 받는 것을 추천한다.

    버전확인으로 윈도 cmd 창에서 확인할 수 있다. (npm이란, Javascript로 개발된 각종 모듈의 설치, 업데이트, 구성, 제거 과정을 자동화하여 관리해 주는 기능)


    REPL

    • R(Read)→E(Evaluate)→P(Print)→L(Loop)
    • 애플리케이션 실행 상태에서 사용자가 입력한 명령어(소스코드)를 읽고(Read) 명령어를 평가(Evaluate)하고 결과를 출력(Print)한 다음 다시 입력을 기다리는 상태로 돌아가는 과정을 반복(Loop)한다.
    • 아래 사진처럼 간단한 코드를 테스트할 수 있다.


    npm

     

    npm

    Bring the best of open source to you, your team, and your company Relied upon by more than 17 million developers worldwide, npm is committed to making JavaScript development elegant, productive, and safe. The free npm Registry has become the center of Java

    www.npmjs.com

    • 노드 패키지를 관리해 주는 툴
    • Node.js 자체로는 못하고 외부에서 패키지를 불러와서 사용해야 한다.
    • node_modules는 용량이 커서 git에 올리면 안된다. (.gitignore 사용)
    • npm 사용하기(터미널의 위치를 사용할 파일로 이동)
      • npm init
        • 프로젝트를 시작할 때 사용하는 명령어
        • package.json에 기록될 내용을 문답식으로 입력
      • npm init --yes
        • package.json이 생성될 때 기본 값으로 생성
      • npm install 패키지 이름
        • 프로젝트에서 사용할 패키지를 설치하는 명령어
        • 설치된 패키지의 이름과 정보는 package.json의 dependencies에 입력된다.
      • 만약, npm 명령어가 안될 경우(bash: npm: command not found) 해결책
        • 환경변수에 npm이 있는 Node.js설치 폴더가 등록되지 않아서 발생한다.

    1. 원도우키 누르고 검색창에 시스템 환경 변수 편집을 검색한다.
    2. 환경 변수 클릭 

       3. 시스템 변수(S) - 새로 만들기(W)

      4. 변수 이름 : NODE_HOME  / 변수 값 : Node.js가 설치되어 있는 폴더 경로

       5. 시스템 변수에 정상적으로 등록이 된 것 확인 후 Adiminstrator에 대한 사용자 변수에서 Path를 누르고 편집 클릭

       6. 새로 만들기를 하여 %변수이름%을 추가하고 확인을 누르면 끝

    다시 VSCode를 실행하면 npm 명령어가 작동된다. 

     

    처음 npm을 설치하고 나면 package.json이 생긴다.

    package.json

    • 패키지들이 서로 의존되어 있어, 문제가 발생할 수 있는데 이를 관리하기 위해 필요한 것
    • 프로젝트에 대한 정보와 사용 중인 패키지 이름 및 버전 정보가 담겨 있는 파일

    파일을 사용할 때는 주석을 제거하고 사용하기

    • JSON 표준의 창시자인 더글라스 크록포드는 서로 다른 시스템 간의 연동과 호환성을 위해 JSON에는 주석이 들어가지 않는 것이 바르다고 규정함
    • 주석을 사용해야 한다면, 주석이 포함된 JSON 데이터를 파싱하기 전에 주석만을 제거해야 한다.

    Node.js 특징

    • 자바스크립트 언어 사용
    • Single Thread
    • Non-blocking I/O
    • 비동기적 Event-Driven

    Single Thread

    • 프로세스
      • 실행 중인 프로그램
      • 운영체제에서 할당하는 작업의 단위
    • Thread(스레드)
      • 프로세스 내에서 실행되는 흐름의 단위
      • 하나의 프로세스에는 n개의 스레드가 존재하며 동시에 작동할 수 있다.
    • Node.js는 사용자가 직접 제어할 수 있는 스레드는 하나이다.
      • 싱글 스레드라 하나만 처리할 수 있다.
      • Non-blocking I/O 기능으로 일부 코드는 백그라운드(다른 프로세스)에서 실행 가능
      • 에러를 처리하지 못하고 멈춘다.
      • 프로그래밍 난이도가 쉽고, cpu, 메모리 자원을 적게 사용한다.

    Non-blocking I/O

    • 동기(Synchronous)
      • 데이터의 요청과 결과가 한 자리에서 동시에 일어나는 것
      • 요청한 자리에서 결과가 주어짐
      • 한 요청에 서버의 응답이 이루어질 때까지 계속 대기
    • 비동기(Asynchronous)
      • 동시에 일어나지 않는 것
      • 요청한 후 응답을 기다리지 않고 다른 활동을 한다.

    • I/O 작업
      • 파일 시스템 접근(읽기, 쓰기, 만들기 등) 네트워크 요청
      • Node.js는 표준 라이브러리의 모든 I/O 메서드를 비동기 방식으로 제공

    Event-Driven

    • 이벤트가 발생할 때 미리 지정해 둔 작업을 수행
    • 이벤트 리스너(Event Listener)
      • 이벤트 등록 함수
    • 콜백 함수(Callback Function)
      • 이벤트가 발생했을 때 실행되는 함수


    Node.js의 역할

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