본문 바로가기

Node

(13)
DNS 모듈 DNS 모듈이란? DNS를 다룰 때 사용하는 모듈 도메일 통해 IP나 DNS 레코드를 얻고자 할 때 사용 A(ipv4주소) AAAA(ipv6주소) NS(네임서버) SOA(도메인정보) CNAME(별칭, 주로 www가 붙는 주소는 별칭인 경우가 많음) MX(메일서버) // mjs방식 // import dns from 'dns/promises' // // // const ip = await dns.lookup('gilbut.co.kr'); // console.log('ip:', ip); // // const a = await dns.resolve('gilbut.co.kr', 'A'); // console.log('A:', a); // // const mx = await dns.resolve('gilbut.co..
url 모듈 url 모듈이란? 인터넷 주소를 쉽게 조작하도록 도와주는 모듈 url 처리에 크게 두 가지 방식이 있음(기존 노드 방식 vs WHATWG 방식) 요즘은 WHATWG 방식만 사용함 WHATWG 방식 주소 체계는 다음과 같음 기본 URL const myURL = new URL('http://188.168.1.202:9090/'); console.log('new URL():', myURL); searchPararms WHATWG 방식에서 쿼리스트링(search) 부분 처리를 도와주는 객체 const myUrl = new URL('http://www.amazon.co.kr/?page3&limit=10&category=nodejs&category=javascript'); console.log('searchPara..
노드 내장 모듈(os, path) os 운영체제의 정보를 담고 있음 모듈은 require로 가져옴(내장 모듈이라 경로 대신 이름만 적어줘도 됨) os.arch(): process.arch와 동일합니다. os.platform(): process.platform과 동일합니다. os.type(): 운영체제의 종류를 보여줍니다. os.uptime(): 운영체제 부팅 이후 흐른 시간(초)을 보여줍니다. process.uptime()은 노드의 실행 시간이었습니다. os.hostname(): 컴퓨터의 이름을 보여줍니다. os.release(): 운영체제의 버전을 보여줍니다. os.homedir(): 홈 디렉터리 경로를 보여줍니다. os.tmpdir(): 임시 파일 저장 경로를 보여줍니다. os.cpus(): 컴퓨터의 코어 정보를 보여줍니다. os.f..
노드 내장 객체 process 현재 실행중인 노드 프로세스에 대한 정보를 담고 있음 process.env 시스템 환경 변수들이 들어있는 객체 비밀키(데이터베이스 비밀번호, 서드파티 앱 키 등)를 보관하는 용도로도 쓰임 환경 변수는 process.env로 접근 가능 일부 환경 변수는 노드 실행 시 영향을 미침 예시) NODE_OPTIONS(노드 실행 옵션), UV_THREADPOOL_SIZE(스레드풀 개수) max-old-space-size는 노드가 사용할 수 있는 메모리를 지정하는 옵션 process.nextTick(콜백) 이벤트 루프가 다른 콜백 함수들보다 nextTick의 콜백 함수를 우선적으로 처리함 너무 남용하면 다른 콜백 함수들 실행이 늦어짐 비슷한 경우로 promise가 있음(nextTick처럼 우선순위가 높음) 아래 예제..
노드 내장 객체(global, console, 타이머) 1. global 노드의 전역 객체 브라우저의 window와 같은 전역 객체 전역 객체이므로 모든 파일에서 접근 가능 window.open 메서드를 그냥 open으로 호출 할 수 있는 것처럼 global도 생략가능 global.console, global.require 등 console, require 등도 global이 생략되어 있는 것 2. console 브라우저의 console 객체와 매우 유사 console.time, console.timeEnnd : 시간로깅(time과 timeEnd 사이의 시간을 로깅해줌, 즉 코드 수행시간 확인) console.error : 에러로깅 console.log : 평범한 로그 console.dir: 객체 로깅 console.trace: 호출스택 로깅(함수 안에서 쓰..
다이나믹 임포트 다이나믹 임포트 CommonJS 모듈에서 사용됨 동적 불러오기, 조건부로 모듈을 불러오는 방식을 말함 dynamic.js const a = false; if(a){ require('./func'); } console.log('성공'); 여기서 a는 false기 때문에 require('./func');는 실행되지 않음. 이렇게 조건부로 모듈을 불러오는 것을 다이내믹 임포트라고함 mjs에서는 위의 방식으로는 불가능 mjs에서는 아래처럼 const a = true; if(a){ const m1 = await import('./func.mjs'); console.log(m1); const m2 = await import('./var.mjs'); console.log(m2); } mjs에서는 - import라는 ..
MAP과 SET, WEAKMAP, WEAKSET Map Map은 객체와 유사한 자료구조 const m = new Map(); m.set('a','b'); // key: a , value: b로 Map속성에 추가 m.get(a) // get으로 a의 값 조회 m.size; // size로 속성의 개수 조회 m.has(a); //has로 속성 존재 여부 확인, a를 가지고 있으면 true, 없으면 false m.delete(a); //delete로 속성을 삭제 m.clear;//clear()로 전부제거 Set Set은 배열과 유사한 자료구조 배열을 완전히 대체하기 힘듬 -> 왜? 중복을 허용하지 않기 때문 따라서 기존 배열의 중복을 제거할 때도 사용 const s = new Set(); s.add(false); //add(요소)로 Set에 추가합니다 s...
for await(변수 of 프로미스 배열) for await(변수 of 프로미스 배열) resolve된 프로미스가 변수에 담겨 나옴 await을 사용하기 때문에 async 함수 안에서 해야함 const promise1 = Promise.resolve('성공1'); const promise2 = Promise.resolve('성공2'); (async () => { for await (promise of [promise1, promise2]){ console.log(promise); } })();