nodeJS - built-in module (os / path)
노드는 웹 브라우저에서 사용 되는 javascript보다 더 많은 기능 제공한다. 운영 체제 정보 접근, 클라이언트가 요청한 주소에 대한 정보 가져오기 등 노드는 이러한 기능을 하는 모듈을 제공한다.
- OS 모듈 : 운영체제 정보 가져오기
os.js
// 모듈 불러오기
const os = require('os');
// os 아키텍쳐 정보
console.log(os.arch());
// os 플랫폼 정보
console.log(os.platform());
// os 종류
console.log(os.type());
// os 부팅 이후 흐른 시간(초) (process.uptime()은 노드의 실행 시간)
console.log(os.uptime());
// 컴퓨터의 이름
console.log(os.hostname());
// 홈 디렉토리 경로
console.log(os.homedir());
// 임시 파일 저장 경로
console.log(os.temdir());
// CPU 정보
console.log(os.cpus());
// CPU 개수
// 노드에서 싱글 스레드 프로그래밍을 하면 코어가 몇개든 상관없이 대부분의 경우 코어를 하나만 사용. cluster 모듈을 사용하여 코어 개수에 맞춰서 프로세스를 늘릴 수 있다.
console.log(os.cpus.length())
// 사용 가능한 메모리(RAM)
console.log(os.freemem())
// 전체 메모리(RAM)
console.log(os.totalmem())
- path : 폴더와 파일 경로를 쉽게 조작하도록 도와주는 모듈. path 모듈이 필요한 이유 중 하나는 os 별로 경로 구분자가 다름 (윈도우 : \ (역슬래시), 맥: / (슬래시))
// 모듈 불러오기
const path = require('path');
// 경로의 구분자
console.log(path.sep);
// 맥: / , 윈도우: \
// 환경 변수의 구분자
console.log(path.delimiter);
// 맥: 콜론(:), 윈도우: 세미콜론(;)
// 파일이 위치한 경로
console.log(path.dirname(string));
// desktop/usr/creamer
// 파일의 확장자
console.log(path.extname(string));
// .js
// 확장자를 포함한 파일의 이름.
console.log(path.basename(string));
// module.js
// 파일의 이름만 표시. basename의 두번째 인수로 파일의 확장자를 넣으면 된다.
console.log(path.basename(string, path.extname(string)));
// module
// 파일의 경로를 root, dir, base, ext, name으로 나눠서 표시
console.log(path.parse(string));
// path.parse()한 객체를 파일 경로로 합친다.
console.log(path.format({객체}));
// \ 또는 / 를 여러번 사용 했거나 혼용 했을때 정상 경로로 변환
console.log(path.nomalize('desktop//creamer\\'));
// 절대 경로인지 상대 경로(false) 인지 파악.
console.log(path.isAbsolut('경로'));
// 절대 경로 : true, 상대 경로 : false
// 기준 경로에서 비교 경로로 가는 방법을 알려준다.
console.log(path.relative('기준경로', '비교경로'));
// ../../..
// 여러 인수를 넣으면 하나의 경로로 합친다. 상대 경로인 ..(부모 디렉토리)와 .(현재 디렉토리)도 알아서 처리.
console.log(path.join(___dirname, '비교경로'));
// path.join과 비슷하지만 차이점이 있다.
console.log(path.resolve(___dirname, '비교경로'));
[path.join vs path.resolve]
- path.join : /(슬래시)를 만났을때 상대 경로로 처리
path.join('/a', '/b', 'c');
// 결과 : /a/b/c/
- path.resolve : /(슬래시)를 만났을때 절대 경로를 인식해서 앞의 경로 무시
path.resolve('/a', '/b', 'c');
// 결과 : /b/c/
[/(슬래시) vs //(쌍슬래시)]
/(슬래시) : 기본적으로 경로는 슬래시 하나만 사용
//(쌍슬래시) : 자바스크립트 문자열에서 /가 특수 문자 이므로 //를 사용 ex : desktop/node에서 /n은 자바스크립트 문자열에서 줄바꿈이라는 뜻이므로 오류가 발생 할 수 있으므로 쌍 슬래시를 사용. desktop//node
[상대 경로 vs 절대 경로]
상대 경로 : 현재 파일이 기준 현재 파일과 같은 경로면 점 하나(.) 한단계 상위 폴더면 점 두개(..)
절대 경로 : 루트 폴더(/)나 노드 프로세스가 실행되는 위치가 기준