process
process 객체는 현재 실행되고 있는 노드 프로세스에 대한 정보를 담고 있다.
process.version
설치된 노드의 버전
process.arch
프로세서 아키텍쳐 정보
ex) x64, x86, aprm, ia32 등
process.platform
운영체제 플랫폼 정보
ex) win32, linux, darwin 등
process.pid
현재 실행중인 노드 프로세스의 아이디
process.uptime()
프로세스가 시작한 이후 현재까지 흐른 시간 (단위 : 초)
process.execPath
node.exe의 경로
ex) C:\Program Files\nodejs\node.exe
process.cwd()
현재 실행중인 노드 파일의 위치
process.cpuUsage()
현재 노드 프로세스의 cpu 사용량
os
os모듈은 운영체제의 정보를 가져올 수 있는 모듈이다.
os.arch()
process.arch와 동일
os.platform()
process.platform과 동일
os.type()
운영체제의 종류
ex) Windows_NT
os.uptime()
운영체제 부팅 이후 현재까지 흐른 시간
os.hostname()
컴퓨터의 이름
os.release()
운영체제 버전
os.homedir()
홈 디렉토리 경로
os.tmpdir()
임시 파일 저장 디렉토리 경로
os.cpus()
컴퓨터의 코어 정보
os.cpus().length 는 코어 개수를 보여준다.
os.freemem()
사용 가능한 메모리 용량
os.totalmem()
전체 메모리 용량
os.constant()
각종 에러, 신호에 대한 정보
ex) EADDRINUSE, ECONNRESET 등
path
폴더와 파일 경로를 쉽게 조작하도록 도와주는 모듈
대표적으로 windows, linux의 서로 다른 경로 delimiter를 운영체제의 영향 없이 node.js 코드가 동작할 수 있도록 해주는 역할을 한다.
(윈도우 타입 = ‘' , POSIX 타입 = ‘/’)
path.sep
경로의 구분자
윈도우는 ‘' , 리눅스는 ‘/’ 이다.
path.delimiter
환경 변수의 구분자
process.env.PATH에 사용되는 구분자이다.
윈도우는 ‘;’ , 리눅스는 ‘:’ 이다.
path.dirname(파일경로)
파일이 위치한 폴더 경로
path.extname(파일경로)
파일의 확장자
path.basename(파일경로, 확장자)
파일의 이름(확장자 포함)
파일의 이름만 표시하고 싶다면, 두 번째 파라미터를 주면 된다.
path.parse(파일경로)
주어진 파일 경로를 root, dir, base, ext, name 으로 분리한다.
path.format(객체)
path.parse() 의 결과로 나온 객체를 파라미터로 주면, 이를 파일 경로로 합쳐준다.
path.normalize(파일경로)
파일 경로 구분자를 여러 번 사용하거나 혼용했을 때, 운영체제에 맞는 구분자로 정상화한 파일 경로를 반환
path.isAbsolute(파일경로)
파일의 경로가 절대경로인지 판단
절대경로이면 true, 상대경로이면 false를 반환한다.
path.relative(기준경로, 비교경로)
첫 번째 경로에서 두 번째 경로로 가는 방법(상대경로)을 반환
path.join(경로, …)
여러 인수를 넣으면 하나의 경로로 합친다.
상대경로인 .. 혹은 . 도 인식하여 처리한다.
path.resolve(경로, …)
path.join()과 비슷하지만, path.resolve()는 파라미터 중간에 절대 경로가 주어지면 이전 파라미터들을 무시한다.
path.join(“/a”, “/b”, “../c”) ⇒ “/a/c”
path.resolve(“/a”, “/b”, “../c”) ⇒ “/c”
url
url모듈은 인터넷 주소를 쉽게 조작할 수 있도록 도와주는 모듈이다.
node.js의 url 처리 방식에는 크게 두 가지 방식이 있는데, WHATWG 방식과 기존 방식이다.
아래 그림의 가운데 주소를 기준으로 위가 WHATWG 방식이고, 아래가 기존 node.js 에서 사용하던 url 구조이다.
WHATWG-basic-url
WHATWG 방식으로 url을 파싱하기 위해선 url 모듈 내의 URL 생성자를 사용한다.
기존 방식으로 url을 파싱하기 위해선 url.parse() 를 이용한다.
const url = require("url");
const { URL } = url;
// WHATWG 방식으로 url 파싱
const myURL = new URL("https://exampleshoppingmall/laptop?name=lenovo");
// 기존 방식으로 url 파싱
const parsedUrl = url.parse("https://exampleshoppingmall/laptop?name=lenovo");
myURL과 parsedUrl 객체는 아래와 같이 생겼다.
// myURL
URL {
href: 'https://exampleshoppingmall/laptop?name=lenovo',
origin: 'https://exampleshoppingmall',
protocol: 'https:',
username: '',
password: '',
host: 'exampleshoppingmall',
hostname: 'exampleshoppingmall',
port: '',
pathname: '/laptop',
search: '?name=lenovo',
searchParams: URLSearchParams { 'name' => 'lenovo' },
hash: ''
}
// parsedUrl
Url {
protocol: 'https:',
slashes: true,
auth: null,
host: 'exampleshoppingmall',
port: null,
hostname: 'exampleshoppingmall',
hash: null,
search: '?name=lenovo',
query: 'name=lenovo',
pathname: '/laptop',
path: '/laptop?name=lenovo',
href: 'https://exampleshoppingmall/laptop?name=lenovo'
}
두 방식의 주요 차이점은 아래와 같다.
쿼리 파라미터 파싱 방식
WHATWG 방식은 searchParams이라는 특수한 객체로 반환한다.
myURL.searchParams.name과 같이 사용 가능하다.
기존 방식은 query 라는 프로퍼티에 담아 반환한다.
query는 단순 문자열이므로, 이를 더 쉽게 사용할 수 있는 객체 형태로 바꿔주는 “querystring” 이라는 모듈과 같이 쓰이는 경우가 대부분이다.
인식하는 url 형태
WHATWG 방식은 host 부분 없이 pathname 부분만 있는 url을 인식하지 못한다.
예를 들어, WHATWG 방식은 /food?name=apple과 같은 url은 인식하지 못한다.
이러한 url을 다룰 땐 url.parse()를 사용해야 한다.
url.format(객체)
파싱된 객체를 원래의 url 문자열로 되돌릴 때 사용한다.
URL 객체와 Url 객체 모두 사용 가능하다.