엘리스 SW 엔지니어 트랙 27일차
최규범 강사님 온라인 강의날
Node.js 기초를 복습하고, 좀 더 알아보는 날
Node.js로 할 수 있는 것들
웹 서비스 구성
Front-end: React.js, Vue.js, Angular.js
Back-end: Express.js
한가지 코드로 IOS, Android 개발
Mobile: React Native
Discord, Slack 등 개발
Desktop App: Electron
JavaScript로 딥러닝
Machine-Learning: Brain.js
Node.js 간단 요약
싱글 쓰레드 & 비동기 & 이벤트 기반
싱글 쓰레드이기 때문에 여러 작업을 하려면
비동기가 필요하고, 비동기를 처리하기위해
이벤트 루프가 이벤트 기반 처리에 도움을 준다
ES6
현대적인 자바스크립트 문법
ECMAScript 버전 6이후를 통틀어 ES6
게으르지않게 새로운것을 배우자
Destructing Structure
// Destructing
// Object
const obj = { name: 'elice', age: 5 }
// obj의 key와 같은 이름으로 변수 선언
const { name, age } = obj
// 다른 이름으로 변수 선언
const { name: n1, age: a1 } = obj
// Array
const arr = ['some', 'values']
// arr에서 순차적으로 변수 선언
const [ frist, second ] = arr
비동기 삼형제
비동기 세가지 코딩 방식
- Callback
- Promise
- Async
Callback속에서 동기가 많아지는
지옥을 해결하기 위해나온 Promise
Promise의 복잡할 수 있는 문법을 위한 async - await
비동기 삼형제의 관계
- callback 지옥 => promise chaining로 해결
- promise 지옥 => async - await로 해결
하지만 프로그램의 형태에 따라서 전부 할 줄 알아야 된다고 한다
Promise.all 비동기 병렬 실행
비동기 함수를 동시에 실행하려면
Promise.all로 병렬 실행 가능
병렬 실행 예시
1초가 걸리는 promise1( )
2초가 걸리는 promise2( )
sync( ) 은 1초 + 2초 => 3초 뒤에 console에 찍히고,
parallel( ) 은 둘이 같이 실행되고,
더 오래걸리는 promise2( )의 2초 뒤에 console에 찍힌다
// Promise.all
async function sync() {
const r1 = await promise1()
const r2 = await promise2()
console.log(r1, r2)
}
async function parallel(){
const [r1, r2] = await Promise.all([
promise1()
promise2()
])
console.log(r1, r2)
}
Event Loop(이벤트 루프)
Node.js만의 특징 X
JavaScript에서도 일반적
보통은 다 콜스택에 쌓이지만
타임아웃은 Message Queue
Promoise는 Job Queue에 쌓인다
Message Queue는
콜스택이 완전히 비어 있을 때 콜스택으로 들어가서 실행되고,
Job Queue는
상위 함수가 종료되기 전에 콜스택에 쌓여서 실행된다
'Web Dev > ELICE' 카테고리의 다른 글
27 (3/3) :: Node.js 웹 프레임워크, 라우팅, Express.js (0) | 2021.12.01 |
---|---|
27 (2/3) :: npm, npx, node 모듈, ES Module (0) | 2021.12.01 |
26 :: Node.js, 서버 만들기, express.js, 왜 Docker 쓰나 (0) | 2021.11.30 |
25 (2/2) :: TypeScript 데코레이터 (0) | 2021.11.27 |
25 (1/2) :: Type Guard, Optional Chaining, 함수 오버로딩, 인덱스 시그니처 (0) | 2021.11.27 |