목차
- 구조분해 할당(비구조 할당)
- 객체 리터럴
- 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
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 백그라운드에서 사라질때까지 실행하지 않겠다. 단 프로미스 개체만 됨.
'백엔드 > Node.js' 카테고리의 다른 글
[nodejs] promise, then, await 구동 순서, 사용 이유 완벽 이해하기 (0) | 2022.01.28 |
---|---|
[nodejs] 템플릿 엔진 nunjucks 설치, 세팅, 사용하기 (0) | 2022.01.28 |
[nodejs] nodejs로 서버로 홈페이지 열기(express 라이브러리 사용) (0) | 2022.01.26 |
[nodejs] nodejs 설치 및 버전 업데이트, nvm 설치, express 라이브러리 설치, 패키지, 라이브러리 (1) | 2022.01.26 |
[nodejs] 노드제이스, VM, WSL, windows terminal, 터미널에서 파일 생성하기 (0) | 2022.01.25 |