REPL - Read, Evaluate, Print, Loop
cmd에서 node 실행할 수 있다
tab으로 자동완성사용
방향키로 전에 명령어 불러오기
경로
../ 부모
../../ 조부모
./현재 내폴더
commonjs 모듈
공통되는부분을 따로 빼주면 두번쓰지 않아도 됨 중복제거 가능
module.exports - 한가지
exports - 두가지 이상
전역스코프의 this는 module.exports다
func 안의 this는 global
require
순환참조 피하자 서로 호출하는거
ES모듈
mjs 확장자
export 각각
import from -> 반드시 최상단
다이나믹 import() -> await
pakage.json에 type: module로 해도 작동함
top level await 가능함
__filename
__dirname
module, require등의 명령어를 선언없어도 쓸 수 있는 이유 - > 노드가 제공하는 내장객체이기 때문
global이란?
브라우저에서는 window
globalThis
유용한 console 명령어
console.dir 객체
console.time
console.timeEnd -> 시간측정
console.trace 호출스택
console.table 테이블시각화
유용한 비동기 함수
setTimeout
setInterval
clearInterval
setImmediate
운영체제 접근
process
__ double under score
process.env 환경변수 시스템 환경변수임
process.nextTick -> 백그라운드에서 새치기
process.exit(0)
process.exit(1)
path
윈도우와 맥리눅스는 경로 표기방식이 다름
join - 절대경로무시
resolve - 절대경로를 따름
url

WHATWG 방식임
dns
A ip주소
MX 메일
CNAME 앞에 뭐 붙어도 같음
crpto
비밀번호 - 해시방식 단방향 (되돌릴 수 없음)
해시값을 가져가도 그걸로 비밀번호 알아낼 수 없음.
abcdefg - > 바보
유명한 암호알고리즘: sha512, bcrypt
대칭형 key
남이 만들거
AES
비대칭형
RSA
비밀번호 절대 .env git 에 올리지 말 것.
kms
util
예전 코드 함부로 못지움. 참조한 프로그램 다 고장나서.
util.promisify: 콜백 -> promise (error, data) => {}
spwan
다른 언어도 실행가능( 그 언어가 설치 되어있을 때만)
fs모듈
파일에 접근하는 모듈
콜백 헬
프로미스랑 콜백 차이가 뭐냐?
callback을 사용하면 비동기 로직의 결과값을 처리하기 위해서는 callback안에서만 처리를 해야하고, 콜백 밖에서는 비동기에서 온 값을 알 수가 없습니다. 하지만 promise를 사용하면 비동기에에서 온 값이 promise 객체에 저장되기 때문에 코드 작성이 용이해집니다. -Aairon님 블로그
콜백, 프로미스 실행 랜덤으로 됨
비동기라서 백그라운드로 콜백함수 보냄
비동기유지하며 순서대로 실행하는법:
1. 콜백지옥 2.async await
버퍼와 스트림
버퍼: 데이터 모으다 일정량되면 전달
스트림: 받을때마다 바로바로 보내주는것
스트림 최소단위 64kb
노드 백그라운드는 4개 스레드로 돌아감
node 에러로 안멈추게할려면: process.on('Ugh Error', () => {})
댓글