- 이벤트 루프 : 이벤트 발생 시 호출할 콜백 함수들을 관리하고 실행순서를 결정한다.

                        노드가 종료 될 때까지 이벤트 처리를 위한 작업을 반복하므로 루프(loop)라고 부른다.

- 백그라운드 : setTimeout같은 타이머나 이벤트 리스너들이 대기하는 곳. 여러 작업이 동시에 실행될 수 있다.

- 태스크 큐 : 이벤트 발생후 백그라운드에서는 태스크 큐로 타이머나 이벤트 리스너의 콜백 함수를 보낸다.

                     정해진 순서대로 콜백들이 줄을 서있으므로 콜백 큐라고도 불리나 특정 경우에는 순서가 바뀌기도 한다.

 

var, const, let

 

요즘엔 var 잘 안쓰고 let이나 const 많이 쓴다고함

var는 블록 스코프를 무시한다는 특징이 있음

ex)

if (true) {

 var x = 3;

}

conlose.log(x); //3

 

if (true) {

 const y = 3;

}

console.log(y); // Uncaught ReferenceError: y is not defined

 

const 는 = 을 한번만 쓸 수 있다.

const a = 3;

a = '5'; // 에러

const b = { name : 'value' };

b.name = 'changevalue';

 

const c;

c = 'xxxx'; // error

 

값을 바꾸고 싶으면

let c = 5;

c = 3;

c = 10;


템플릿 문자열, 객체 리터럴

 

var won = 1000;

var result = '이 과자는' + won + '원입니다.';

// 이 과자는 1000원 입니다.

 

const result = '이 과자는 ${won}원입니다'; // 템플릿 문자열


화살표 함수

 

function add1(x, y) {

 return x + y;

}

 

const add2 = (x, y) => {

 return x + y;

}

 

const add3 = (x, y) => x + y;

 

const add4 = (x, y) => (x + y);

 

function not1(x) {

 return !x;

}

 

const not2 = x => !x;

 

const obj = (x, y) => ({x, y}); // 객체를 return 할때는 소괄호가 필수

 

* 기존 function 이 안없어진 이유는? this 때문

강사왈 ) this를 써야하는 상황이면 function을 쓰고, this가 없으면 화살표를 쓰는 것을 추천한다고 함.

 

button.addEventListener('click', function() {

 console.log(this.textContent); // 버튼에 적혀있는 텍스트 값을 가져옴

});

 

this;

button.addEventListener('click', (e) => {

 console.log(this.textContent); // 동작 안함, 바깥에 있는 this로 인식

});

 

button.addEventListener('click', (e) => {

 console.log(e.target.textContent); // function 의 this처럼 사용하려면 e.target.* 으로 사용해야함

});


 

'IT > Node.js' 카테고리의 다른 글

Node.js 설치하기  (0) 2022.09.14
노드란 무엇인가 & 특성  (0) 2022.09.12

https://nodejs.org/en/

 

Node.js

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

nodejs.org

Node.js 다운로드 및 설치

 

https://code.visualstudio.com/

 

Visual Studio Code - Code Editing. Redefined

Visual Studio Code is a code editor redefined and optimized for building and debugging modern web and cloud applications.  Visual Studio Code is free and available on your favorite platform - Linux, macOS, and Windows.

code.visualstudio.com

vscode 다운로드 및 설치

 

 

'IT > Node.js' 카테고리의 다른 글

알아두어야 할 자바스크립트  (1) 2022.09.22
노드란 무엇인가 & 특성  (0) 2022.09.12

Node.js는 크롬 V8 자바스크립트 엔진으로 빌드된 자바스크립트 런타임 입니다.

브라우저, HTML의 종속성을 벗어나서 Javascript를 실행할 수 있습니다.

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

- 노드: 자바스크립트로 만든 프로그램들을 실행할 수 있게 해줌

- 다른 런타임으로는 웹 브라우저(크롬,엣지..등)가 있음

- 노드 이전에도 자바스크립트 런타임을 만들기 위한 시도가 있었으나 엔진 속도 문제로 실패함

 

노드는 서버인가? No!

- 서버의 역할도 수행할 수 있는 자바스크립트 런타임

- 노드로 자바스크립트로 작성된 서버를 실행할 수 있음

- 서버 실행을 위해 필요한 http/https/http2 모듈을 제공

 

노드의 특성

싱글Thread이면서 비동기 모델 → 엄청난 장점이라 인기가 상승함!

 

- 이벤트가 발생할 때 미리 지정해둔 작업을 수행하는 방식 (대부분의 프로그래밍 특성..)

1) 이벤트 리스너에 콜백 함수 등록

2) 이벤트 발생

3) 등록된 콜백 함수 호출

 

- 논블로킹 I/O

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

대체로 동기이멘서 블로킹, 비동기이면서 논블로킹

비동기이면서 논블로킹일때 동시에 돌아간다고 오해하는데, 노드에서 동시에 돌아가게 하는 것은 힘듦

ㄴ 논 블로킹 방식 하에서 일부 코드는 백그라운드에서 병렬로 실행

ㄴ 일부 코드: I/O작업, 압축, 암호화 등

ㄴ 나머지 코드는 블로킹 방식으로 실행됨

ㄴ I/O작업이 많을 때 노드 활용성이 극대화

 

- 프로세스와 스레드

ㄴ 프로세스: 운영체제에서 할당하는 작업의 단위, 프로세스 간 자원공유 X

ㄴ 스레드: 프로세스 내에서 실행되는 작업의 단위, 부모 프로세스 자원 공유

 

노드 프로세스는 멀티 스레드이지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현

노드는 주로 멀티 스레드 대신 멀티 프로세스 활용

노드 14버전부터 멀티 스레드 사용 가능

 

서버로서의 노드

서버: 네트워크를 통해 클라이언트에 정보나 서비스를 제공하는 컴퓨터 또는 프로그램

클라이언트: 서버에 요청을 보내는 주체(브러우저, 데스크탑 프로그램, 모바일 앱, 다른 서버에 요청을 보내는 서버)

 

노드 != 서버

But, 노드는 서버를 구성할 수 있게 하는 모듈을 제공함

 

노드서버의 장단점

장점 단점
멀티 스레드 방식에 비해 컴퓨터 자원을 적게 사용함 싱글 스레드라서 CPU 코어를 하나만 사용함
I/O 작업이 많은 서버로 적합 CPU 작업이 많은 서버로는 부적합
멀티 스레드 방식보다 쉬움 하나뿐인 스레드가 멈추지 않도록 관리해야함
웹 서버가 내장되어 있음 서버 규모가 커졌을 때 서버를 관리하기 어려움
자바스크립트를 사용함 어중간한 성능
JSON 형식과 호환하기 쉬움  

 

서버 외의 로드

자바스크립트 런타임이기 때문에 용도가 서버에만 한정되지 않음

웹, 모바일 데스크탑 어플리케이션에서도 사용

'IT > Node.js' 카테고리의 다른 글

알아두어야 할 자바스크립트  (1) 2022.09.22
Node.js 설치하기  (0) 2022.09.14

+ Recent posts