Cute Bow Tie Hearts Blinking Pink Pointer

백엔드/Node.js

[nodejs] 구조분해 할당, 객체 리터럴, require, 랜덤함수, promise

청포도 에이드 2022. 1. 27. 17:32
728x90

 

목차

 

- 구조분해 할당(비구조 할당)

- 객체 리터럴

- require

- 자바스크립트 구동원리

- 랜덤함수

- promise

 

구조분해 할당

 

let obj = {
    a:10,
    b:20,
    c:{
        d:30,
    }
}
let {a,b,c} = obj //문법이 이럼.
//let a, b, c = obj 하면 a:10 b:20 ... 이런식으로 출력됨
console.log(a, b, c)

//변수 명을 변경하려면?
let {b:result} = obj
//이렇게하면 b가 사라집니다. 변수명은 result가 됨.

 

 

객체리터럴

 

let a =10
let b = 20
let c = 30
//이녀석들을 한번에 다 객체에 담으려면?

let obj2 = {
    a,
    b,
    c,
}
// let obj2 = {
//     a:a,
//     b:b,
//     c:c,
// } 를 축약한거임

console.log(obj2)

//출력 결과
//{ a: 10, b: 20, c: 30 }

 

그냥 여기 참고하자.. https://ljy98.tistory.com/88

 

 

 

템플릿 문자열, 객체 리터럴, 디스트럭쳐링

1. 템플릿 문자열 (template string) 2. 객체 리터럴 (Enhanced Object Literal) 3. 디스트럭쳐링 (Destructuring) 1. 템플릿 문자열 (template string) 자바스크립트에서 문자열 여러 개를 합칠 때에는 다음과 같..

ljy98.tistory.com

 

require

 

:라이브러리 불러오는 함수

 

require문법은 표준 문법이 아니다.


표준에 없는데 왜 nodejs는 이것이 필요할까?


첫번째 javascript는 여러파일에서 작업할 경우 불편했다.

 

왜 불편?

 

다른 파일에 있는 변수가 왜 다른 공간에서도 실행되지?

 

(모듈 ES7 -> import 문이 생겼다.)

현재는 import, require 둘 다 있음.

nodejs require 옛날에 만들어놓은 좋은 라이브러리다.

import가 아무리 최신이라 하더라도 많이들 require를 쓴다.

그래서 일단 require 쓴다.

리액트때 import 어차피 많이 쓰기 때문에.

사용 방법? (사용목적: 나 아닌 다른 파일에 관여하고 싶지 않다.)

a.js let a = 'podo'
b.js let a = 'podo'

둘다 console.log 찍어보면,

a파일 호출

=>파일이 다르면 변수명이 똑같아도 상관없단 소리.

node js 내가 실행한 파일만 결과물을 만들어준다.

브라우저한테는 모든게 하나의 자바스크립트 일뿐... 파일이랑 관계없다.

그래서 나온 게 모듈이다.

A는 중요한 역할을 작성한 공간


B는 여러 데이터를 저장하는 공간 사용자정보를 담는 공간


{} 객체로 저장하겠다.


nodejs 는 내장객체가 있다.


window란 내장객체도 있음. 이름이 global임

module이란 객체가 있음.

export에 아무것도 없음, 내가 직접 채울수도 있음

module.exports = "a"

같은 방식으로 추가가능

require 역할. 파일에 담긴 exports에 들어잇는 내용 가져올뿐.


파이썬 import랑 똑같다고 보면됨.

exports.aa = function(){
    return 'aa'
}

: 이런 식으로도 사용이 가능하다.


콜백 지옥에 갇히면...

nodejs는 싱글 스레드


non-blocking(멈추지 않는다.)

콜백 단점 : 문법이 복잡;;

예시 addEventListener < 두번째 인자값에 콜백함수 들어감.


ES6, ES7
promise
async
await

 

알기 전


선행지식: 콜백, 자바스크립트 구동원리

 

 


<<자바스크립트 구동원리>>

 

 


글로벌개체에서 생성한 것만 백그라운드로 넘어온다 promise도 글로벌과 같다(global)
nodejs에서 정해진 함수만 백그라운드 전송가능.

 


랜덤함수?

 


console.log(Math.random())


콜백사용하는 이유는 원하는 시점에서 함수를 실행하고 싶어서.


백그라운드에 들어간 코드를 순서대로 실행하고 싶어서.


--> 코드 깔끔하게 하기위해 (콜백지옥에서 빠지기위해)


promise / async / await 사용한다.

목적은 같으나 사용방법이 조금 다름!

 

 

promise 목적

 

 

콜백 기능은 그대로 하되, 코드를 조금만 더 깔끔하게.

사용방법이 좀 까다롭긴함.

promise는 객체이다.

백그라운드에서 항상 promise APIs가 우선 순위

setTimeout setInterval 이 더 나중순위! 코드 작성 순서와 관계없음.

pending 코드가 나올 때까지 기다리는 중이라는 뜻




async : 프로미스를 관리하겠다.

await 백그라운드에서 사라질때까지 실행하지 않겠다. 단 프로미스 개체만 됨.

728x90