on
[Node.js] TIL
[Node.js] TIL
풀스택으로 구현하려다가 백엔드 부분이 어려워서 노드 공부 시작!
libuv: 비동기를 구현해준다. 비동기 IO, 이벤트 기반 라이브러리
동기면서 블로킹/ 비동기면서 논블로킹인 경우 2가지가 있음
노드 프로세스는 멀티스레드지만 직접 다룰 수 있는 스레드는 하나이기 때문에 싱글 스레드라고 표현
모듈
Node.js : module.export와 require
자바스크립트 모듈 : export default 와 import
module.export = {}
객체를 다른 파일에서 쓸 수 있게 해주는 모듈
module.export : 주로 한가지 return할 때 사용
export : 두 가지 이상 return할 때 사용할 수 있음
ex) export.odd = odd;
module.export와 export는 같이 사용할 수 없다.
전역스코프의 this === module.exports
파일을 처음 require로 불러올 때는 파일을 읽은 후 cache에 저장해놓고, 그 이후에 다른 파일에서 불러오면 해당 파일을 읽어서 불러오는게 아니라 cache에서 불러옴
Path
운영체제별로 경로구분자가 달라 폴더와 파일의 경로를 쉽게 조작하는 것을 도와주는 모듈
path.join() / path.resolve()
path.join(__dirname, '..', '/var.js') //절대경로가 있을 때 절대경로를 무시함'var.js' path.resolve(__dirname, '..', '/var.js') //절대경로가 있으면 절대경로 앞부분을 무시함
path.parse() : 파일 경로 분해
path.format() : 파일 경로 합치기
path.normalize() : 중구난방인 /와 \를 정리해줌
URL
┌────────────────────────────────────────────────────────────────────────────────────────────────┐ │ href │ ├──────────┬──┬─────────────────────┬────────────────────────┬───────────────────────────┬───────┤ │ protocol │ │ auth │ host │ path │ hash │ │ │ │ ├─────────────────┬──────┼──────────┬────────────────┤ │ │ │ │ │ hostname │ port │ pathname │ search │ │ │ │ │ │ │ │ ├─┬──────────────┤ │ │ │ │ │ │ │ │ │ query │ │ " https: // user : pass @ sub.example.com : 8080 /p/a/t/h ? query=string #hash " │ │ │ │ │ hostname │ port │ │ │ │ │ │ │ │ ├─────────────────┴──────┤ │ │ │ │ protocol │ │ username │ password │ host │ │ │ │ ├──────────┴──┼──────────┴──────────┼────────────────────────┤ │ │ │ │ origin │ │ origin │ pathname │ search │ hash │ ├─────────────┴─────────────────────┴────────────────────────┴──────────┴────────────────┴───────┤ │ href │ └────────────────────────────────────────────────────────────────────────────────────────────────┘
위에는 노드에서의 주소에 대한 명칭
밑에는 WHATWG에서의 주소에 대한 명칭
querystring : 주소에 데이터가 담겨있는 부분
searchParams : querystring이 문자열로 되어있기때문에 해당 문자열을 객체로 바꿔줌
Node.js에서는 setTimeout 0 대신 setImmediate를 사용
출처: Node.js 교과서
from http://yunred.tistory.com/89 by ccl(A) rewrite - 2021-12-31 20:27:20