[개정3판] Node.js 교과서 - 기본부터 프로젝트 실습까지

나강민·2023년 9월 24일
0

조현영님의 Node.js 강의

언더독 레볼루션 학습 커리큘럼을 따라갑니다.

현재 글 진행 과정 목차

Chapter 0

  • 노드 강좌 소개
  • 노드의 정의
  • 노드의 특성
  • 서버로서의 노드
  • 노드, vscode 다운
  • Q&A

Chapter 2

  • REPL와 js 파일 실행
  • Common js 모듈 시스템

Chapter 0


0-1. 노드강좌소개

  • 그렇게 크게 바뀌진 않았지만
  • 제일 중요한 점은 타입스크립트가 생김
  • 유튜브의 Chapter 8까지 무료
  • 책을 사기 전 교안과 유튜브 강의를 통해 구매 여부를 파악해보면 좋음!

깃허브 및 수업 자료

Node.js 교과서, 개정 3판

0-2. 노드의 정의

  • 노드는 서버가 아님
  • 노드는 런타임입니다.
  • 런타임이란? 간단하게 말하면 실행
  • 노드를 통해 http와 브라우저의 종속성에서 벗어남

런타임

  • 런타임 : 특정언어로 만든 프로그램을 실행할 수 있게 해주는 가상 머신(크롬의 V8엔진머신)

모던 JavaScript 튜토리얼

참고자료 - 밑에는 참고 글( 꼭보기!!! )

[Node.js] 비동기 개념에 익숙해지기

0-3. 노드의 특성

이벤트 기반

이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식

  • 시스템과 이벤트 리스너를 통해 발생과 호출을 이루어짐
  • 클릭을 하면 설정한 이벤트의 대한 콜백함수를 등록하고 등록된 콜백함수를 호출

논블로킹

오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되게하고, 나중에 오래 거리는 함수를 실행

  • 일부 코드가 백그라운드에서 병렬로 실행됨.
  • 노드에서 동시를 실행하기는 매우 어려움
  • 동기와 비동기의 차이
  • 동기는 순서대로, 비동기는 동시
  • 이건 3장에서 다시 코드를 통해 다시 배움.

프로세스 vs 스레드

  • 프로세스 : 운영체제에서 할당하는 작업의 단위, 프로레스 간 자원 공유 X
  • 스레드 : 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유
  • 노드 프로세스는 멀티 스레드이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현
  • 노드는 싱글스레드라고 말하는 이유는 우리가 컨트롤 할 수 있는 스레드는 하나라 그런거임. 멀티스레드기반이고 이제 업데이트를 통해 멀티 스레드 코드를 작성할 수 있음(노드 14버전)
  • 당연히 프로그래밍에서 멀티스레드를 하는게 좋음 → 대신 왕 어려움

싱글스레드

논 블로킹 모델을 채택하여 일부 코드(I/O)를 백그라운드(다른 프로세스)에서 실행 가능

  • 요청을 먼저 받고, 완료될 때 응답함
  • I/O 관련 코드가 아닌 경우 싱글스레드, 블로킹 모델과 같아짐
  • 노드는 싱글스레드 기깔나게 멋있게 쓰기가 핵심임.

0-4. 서버로서의 노드

서버로서의 노드

  • 서버
    • 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램
  • 클라이언트
    • 서버에 요청을 보내는 주체(브라우저, 데스크탑 프로그램, 모바일 앱, 다른 서버에 요청을 보내는 서버)
  • 예시
    • 브라우저(클라이언트, 요청)가 길벗 웹 사이트(서버, 응답)
  • 노드 ≠ 서버
  • But, 노드는 서버를 구성할 수 있게 하는 모듈(4장에서 설명)을 제공

노드 서버의 장단점

  • PHP는 짱인데,,, 참 이 친구 좋은데… 성격은 좋은데….
  • JS가 일단 짱이다.
  • 목적에 충실한 친구이기 때문에 실수로 PHP로 모든 것을 처리하려 하지 말고 JS를 통해서 모든 원하는걸 해결하자.

서버 외의 노드

  • 웹 : Angular, React, Vue, Metor
  • 모바일 앱 프레임 워크 : React Native
  • 데스크탑 개발 도구 : Electron(Atom, Slack, VSCode, Discord 등 제작)

0-5. node, vscode 다운

  • node는 가장 최신버전으로 다운 받기
  • vscode 다운받기 솔직히 메모장으로 해도 됨!
  • 환경 구성은 정말 세상에서 제일 쉽기 때문에 터미널로 npm, node 설치 여부만 확실하게 파악하기!

Chapter 2


2-1. REPL 사용하기(JS 실행)

  • Read, Evaluate, Print, Loop
  • 콘솔에서 코드를 작성 및 실행
  • 매우 불편함
  • 그래서 VSCode를 이용하여 코드를 작성하고 파일 단위로 터미널에서 node filename으로 실행할 예정

2-2. Common Js 모듈 시스템

모듈

  • 노드는 자바스크립트 코드를 모듈로 만들 수 있음
  • 모듈 : 특정한 기능을 함수나 변수들의 집합
  • 모듈로 만들면 여러 프로그램에서 재사용 가능
  • 그래서 하나의 디렉토리 안에 3개의 js파일을 만들어서 실습 진행
  • 실습 코드 및 수업 내용 정리 링크(Github)

0개의 댓글