nodejs 특징
비동기식
단일쓰레드
이벤트루프
작은 데이터가 많을때 좋음
단일쓰레드라 큰 함수를 다룰때 안좋음
npm이라는 가장큰 라이브러리를 보유
싱글 스레드 -> 콜스텍이 하나
web api -> 싱글스레드에서 처리해 달라고 요청을 보냄
-> 개발자가 건들일수 없는 다른 쓰레드
v8머신 -> 자바스크립트를 컴파일해줌
자바스크립트 런타임
런타임이란 프로그래밍 언어가 돌아가는 환경
자바스크립트의 런타임은 nodejs와 브라우저
작동 원리
콜스텍에서 수행함
자신이 할일이 아닌경우(api) 외부로 던짐
자신이 할일을 함 , api에서 수행(개발자 범위 밖)
자신이 할일을 함, api에서 끝나면 콜백큐에 콜백함수를 던짐
자신이 할일을 함, 이벤트루프가 콜백큐에서 콜백함수 확인
없음 , 이벤트루프가 콜스텍에 일 없는거 보고 콜백함수를 던짐
콜백함수 실행
함수 1
함수 2(web api에 요청)
함수 3 함수 2
함수 4 함수 2 (끝냄)
함수 4 함수 2
함수 4 함수 2 함수 4
함수 2 함수 4
함수 4
싱글 스레드에서 작업을 하다가
필요시 web api에 요청을 보냄
요청을 보내고 싱글 스레드는 자기 할일을 함
web api에서 작업이 끝나면 이벤트 루프에 알리고 콜백함수를 등록
싱글 스레드에 작업이 없으면 이벤트 루프에서 콜백함수를 가져오고 실햄
자바스크립트 특징 정리
exports로 공개한 모듈은 객체 생성하는게아니라 캐시로 저장됨-> 다른 곳에서 다시 사용하면 저장된 값을 불러옴
es6문법
const , let
블럭 내에 생존
const 는 변경 불가
`(백틱)
문자열 템플릿을 묶을때 사용
var string = `${a}는 ${b}입니다.`;
this
모든 새로운운 함수에 자신 객체를 가르킴
a 함수속 b함숭수에서 this를 쓰면 b 객체를 참조함
하지만 () => {} 로 정의하면 b 함수 안에서 this를 쓰면 a함수 객체를 가르킴
(react 문법에서 필요함)
함수는 하나의 객체
객체 내에서 정의 된 함수는 메소드