티스토리 뷰
1. os 내부 모듈
2. path 내부 모듈
1. os 내부 모듈
const os = require('os');
console.log(os.cpus().length); // 4
console.log(os.cpus()); // model, speed, times ...
console.log(os.platform()); // linux
console.log(os.homedir()); // home/jenny
console.log(os.hostname()); // DESKTOP-PUMI14Q
console.log(os.freemem()); // 2342322176
console.log(os.totalmem()); // 6120857600
console.log(os.networkInterfaces()); // 네트워크 인터페이스 정보 (address, netmask, mac ...)
os는 내부 모듈이기 때문에 npm install로 설치할 필요가 없다.
os 객체의 cpus() 메소드는 이름 그대로 cpu에 대한 정보를 나타내준다. 내 노트북의 cpu는 4개이다.
platform()은 현재 어떤 운영체제를 사용하고 있는지 알려준다. 윈도우는 win32, 맥은 darwin이라는 출력 결과가 나온다.
hostname()은 컴퓨터의 호스트네임을 말한다.
freemem()과 totalmem()은 각각 유휴메모리와 총 메모리를 나타낸다.
networkInterfaces()는 네트워크 인터페이스 정보를 준다. IP 주소, 넷마스크, MAC 주소 등이 출력된다.
2. path 내부 모듈
// path.js
const os = require('os');
const path = require('path');
console.log(__dirname); // /home/jenny/workspace/220315/multer
console.log(__filename); // /home/jenny/workspace/220315/multer/path.js
let dir1 = path.join(__dirname, 'jenny.js'); // /home/jenny/workspace/220315/multer/jenny.js
let dir2 = path.resolve(__dirname, 'jenny.js'); // /home/jenny/workspace/220315/multer/jenny.js
dir1 = path.join(__dirname, '/jenny.js'); // /home/jenny/workspace/220315/multer/jenny.js (절대경로 무시)
dir2 = path.resolve(__dirname, '/jenny.js'); // /jenny.js (절대경로 존중)
let str = 'server.js';
console.log(str.split('.')[1]); // js
console.log(path.extname('server.js')); // .js
console.log(path.dirname('/home/jenny/workspace/220315/multer/jenny.js')); // /home/jenny/workspace/220315/multer
console.log(path.basename('/home/jenny/workspace/220315/multer/jenny.js')); // jenny.js
console.log(path.basename('/home/jenny/workspace/220315/multer/jenny.js', '.js')); // jenny
console.log(path.basename('/home/jenny/workspace/220315/multer/jenny.js').split('.')[0]); // jenny
__dirname은 node 명령어를 실행한 디렉토리의 절대 경로를 나타낸다.
즉, node path.js라는 명령어를 실행한 디렉토리의 절대 경로는 /home/jenny/workspace/220315/multer이다.
__filename은 node 명령어를 실행한 파일의 절대 경로를 나타낸다. 따라서 __dirname 결과 뒤에 파일명을 붙인 것과 같다.
path 객체의 join() 메소드와 resolve() 메소드는 () 안의 2개의 인자를 붙여주는 역할을 한다. 둘의 차이는 join()은 절대경로를 무시하고, resolve()는 절대경로를 존중해준다는 것이다.
쉽게 설명하자면, join()을 사용했을 때에는 두 번째 인자가 'jenny.js'일 때와 '/jenny.js'일 때 콘솔 로그 결과가 같고, resolve()를 사용했을 때에는 다른 결과가 나온다. 이는 join()에서는 두 번째 인자를 상대 경로로 인식하여 첫 번째 인자에 무조건 붙여주고, resolve()에서는 '/jenny.js'를 절대 경로로 인식하여 ('/'라는 최상위 디렉토리 하위에 jenny.js 파일이 있다는 것으로 인식하여) 나타난 차이이다.
extname()은 파일의 확장자만 분리해주고, basename()은 __filename에서 __dirname을 뺀 나머지라고 생각하면 된다. basename()에 2개의 인자를 넣을 경우 두 번째 인자에 들어간 부분이 제외된 결과가 나오게 된다.
Q. __dirname 과 process.cwd()는 무슨 차이일까?
대체로 __dirname과 process.cwd() (혹은 pwd)의 콘솔 로그 결과는 같은 내용이 출력된다. 하지만 두 결과는 항상 같지 않고, 개념 자체도 비슷한 것 같지만 차이가 존재한다. process.cwd()와 pwd 명령어는 현재 작업 중인 디렉토리를 말한다.
jenny@DESKTOP-PUMI14Q:~/workspace/220315/multer$ node ~/hello/abc.js
예를 들어, 절대 경로가 /workspace/220315/multer 인 곳에서 node 명령어로 다른 경로에 있는 abc.js 파일을 실행한다고 가정하자. 이때 __dirname과 process.cwd()는 다음과 같다.
console.log(__dirname); // /home/jenny/hello
console.log(process.cwd()); // /home/jenny/workspace/220315/multer
'Node.js' 카테고리의 다른 글
[Node.js] ORM(Object Relational Mapping)과 sequelize (작성 중) (0) | 2022.05.12 |
---|---|
[Node.js] ws 모듈을 이용한 Web Socket 통신 (0) | 2022.03.20 |
[Node.js] Multer 모듈을 이용한 이미지 업로드 (0) | 2022.03.17 |
[Node.js] nodemon, cookie-parser + chokidar (0) | 2022.03.03 |
[Node.js] Crypto 모듈을 이용한 암호화, JWT (1) | 2022.03.02 |
- Total
- Today
- Yesterday
- 컴파일
- History 객체
- Char
- keyword
- bom
- int
- gcc
- DOM
- Navigator 객체
- Screen 객체
- short
- long
- 변수
- 키워드
- stdio.h
- location 객체
- 리액트 #React #props #state #javascript
- 자료형
- window 객체
- Browser Object Model
- Document Object Model
- c언어
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | 4 | 5 | 6 | 7 |
8 | 9 | 10 | 11 | 12 | 13 | 14 |
15 | 16 | 17 | 18 | 19 | 20 | 21 |
22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 | 31 |