esyeol / Start-Node

노드 공부용 저장소.

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

node.js 개인 공부용 저장소.

Node.js란?

  • v8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 => 서버 X
  • 노드로 자바스크립트로 작성된 서버를 실행할 수 있음.
  • 서버 실행을 위해 필요한 http/https/http2 모듈등을 제공함.

Node 특징

  • 이벤트 기반

    • 이벤트가 발생할 때, 미리 작성해둔 작업을 수행하는 방식.
    • 이벤트란: onclick, request network, timer, etc..
    • 이벤트리스너: 이벤트 등록하는 함수.
    • 콜백함수: 이벤트가 발생했을 때, 실행될 함수.
  • 논블로킹 I/O

    • 논블로킹: 오래 걸리는 함수를 백그라운드로 보내서 다음 코드가 먼저 실행되고, 나중에 오래 걸리는 함수를 실행.
    • 논 블로킹 방식 하에서 일부 코드는 백그라운드에서 병렬적으로 실행됨.
    • 일부코드(I/O작업(파일 시스템, 네트워크 요청),압축, 암호화..)
    • 나머지 코드는 블로킹 방식으로 실행됨. ==> I/O 작업이 많을 때 노드 활용성이 극대화된다.
  • 프로세스

  • JS 호출 스택(함수의 호출,자료구조의 스택)

    • Anonymous => 가상의 전역 컨텍스트
    • 함수 호출 순서대로 쌓이고, 역순으로 실행됨 => 기본적인 스택 자료구조랑 똑같이 구성됨.
    • 함수 실행이 완료되면 스택에서 pop
    • LIFO(후입선출)구조라서 스택이라고 불림.
    • but,호출 스택만으로 js의 동작 구조를 모두 적용 X => 논블로킹 I/O 와 같이 비동기로 처리되는 함수는 JS 호출 스택에 귀속되어 실행되지 않기 떄문.
    • js 호출 스택에 비동기 함수(EX)setTimeout)가 들어있는 경우, 비동기로 백그라운드에서 해당 함수를 처리함. 이때 백그라운드에서 실행되는 함수는 보다 호출 스택이 무조건 먼저 처리 되야함. 순서: 호출 스택에 함수 쌓임(이때, 비동기로 처리하는 호출 함수가 존재함)=> 비동기 호출 함수를 백그라운드로 넘겨줌. => 호출 스택 처리=> 백그라운드 함수 처리=> 테스크 큐로 백그라운드 처리 내용 이동=> 호출 스택에서 이벤트 루프를 통해 테스트 큐에 들어 있는 값을 처리(호출 스택이 비어 있을 때, 테스크 큐에서 호출 스택으로 넘어감.) => 호출 스택 제거 ==> 호출 스택, 백그라운드, 테스트 큐 모두 Empty=> 자바스크립트 실행완료.
  • const, let

    • ES2015이후 const, let이 var 대체ㄴ
    • const, let => 블록 스코프, var => 함수 스코프
    • 함수 스코프 : 다른언어와 달리 if, for,while에서 영향을 미치지 못함.(함수는 예외.) 블록({}) 안에 선언한 var x = 4; 라는 값을 블록 밖에서도 사용할 수 있음.
    • 블록 스코프 : 함수 및 블록({})에서 별도의 스코프를 가짐. 함수 스코프와 반대. ES2015버전 이후 도입한 const,let이 블록 스코프 형식이기에 var과 let,const를 혼용해서 쓰는 일은 없도록 해야함.
  • 템플릿 문자열

    • 문자열을 합칠 때 ES2015 이후 부터 `(백틱)을 사용하고 ${변수} 형태로 사용하면 '+'를 사용하지 않고 사용할 수 있음.
  • 객체 리터럴

    • ES2015 이후부터 객체 메서드의 function을 붙이지 않아도 됨. 객체 메서드의 key-value 값이 동일하면 축약해서 사용가능. ex) {mObject:mObject} => {mObject}
  • Promise

    • 내용이 실행은 되었지만 결과를 반환하지 않은 객체.
    • 기존 js 문법에서 무분별하게 사용되고 있는 콜백을 줄이고, 비동기로 본인이 원할 때, promise로 지정한 객체를 반환할 수 있음.
    • then을 붙이면, 지정한 객체의 결과값을 반환함.
    • 실행이 완료되지 않았을 경우, 완료된 이후 then의 내부 함수가 실행됨.
    • resolve(성공한 리턴 값) -> then
    • reject(실패한 리턴 값) -> catch
    • finally 무조건 실행

About

노드 공부용 저장소.


Languages

Language:HTML 66.5%Language:JavaScript 33.5%