융융이'Blog

node 내장 모듈(OS, path, url, qureystring ) 본문

2022이전/node.js

node 내장 모듈(OS, path, url, qureystring )

바로퇴장 2020. 1. 13. 12:24

os

노드는 os모듈에 정보가 담겨 있어 운영제체의 정보를 가져올 수 있습니다.

const os = require('os')

console.log("운영체제 정보 ----------");
console.log('os.arch():', os.arch());
console.log('os.platform():', os.platform());
console.log('os.type():', os.type());
console.log('os.updtime():', os.updtime());
console.log('os.hostname():', os.hostname());
console.log('os.release():', os.release());
console.log('경로-------------------');
console.log('os.homedir():', os.homedir());
console.log('os.tmpdir():', os.tmpdir());
console.log('cpu 정보 ---------------');
console.log('os.cpus():', os.cpus());
console.log('os.cpus().length:', os.cpus().length);
console.log('메모리 정보 --------------');
console.log('os.freemem():', os.freemem());
console.log('os.totalmem():', os.totalmem());

os.platform(): darwin
os.type(): Darwin
os.updtime(): 5626
os.hostname(): Happy-Mac.local
os.release(): 19.2.0
경로-------------------
os.homedir(): /Users/huiyung
os.tmpdir(): /var/folders/_1/51sns4091cg8ll9tnb97qvnr0000gn/T
cpu 정보 ---------------
os.cpus(): [
  {
    model: 'Intel(R) Core(TM) i7-7700HQ CPU @ 2.80GHz',
    speed: 2800,
    times: { user: 275700, nice: 0, sys: 529580, idle: 4821550, irq: 0 }
  },
//...8개 더 나옴
]
os.cpus().length: 8
메모리 정보 --------------
os.freemem(): 4291153920
os.totalmem(): 17179869184

cluster모듈을 사용하는 경우 코어 개수에 맞춰서 프로세스를 늘릴수 있습니다.

PATH

// path 모듈
console.log('---- path 모듈 ----');
console.log('파일 경로: ',__filename);
console.log('파일이 위치한 경로: ',__dirname);

const path = require('path');
console.log('path.sep OS에따른 경로 구분자: ',path.sep);
console.log('path.delimiter 환경변수 구분자: ',path.delimiter);
console.log('path.dirname() 파일경로: ',path.dirname(__filename));
console.log('path.extname() 파일확장자: ',path.extname(__filename));
console.log('path.basename() 파일이름: ',path.basename(__filename));
console.log('path.parse() 파일정보 분해: ',path.parse(__filename));
console.log('path.format() 파일정보 합침');
console.log('path.normalize() 슬래시 역슬래시 경로 변경');
console.log('경로: (./ 현재폴더 상대경로) , (../ 부모폴더 상대경로) , ( / 루트 절대경로)');
console.log('path.isAbsolute() 경로가 절대인지 상대인지 확인: ',path.isAbsolute('C:\\'));
console.log('path.relative() A에서 B로가는 상대경로를 보여줌: ',path.relative('D:\\포트폴리오\\_Study\\Inflearn_nodeJS-Textbook\\globalM.js', 'D:\\포트폴리오'));
console.log(' -- path.join: 절대경로를 무시하고 합침 , path.resoleve: 절대경로를 고려하고 합침(C:\) -- '); // 중간에 /tempDir를 만났을때 상대로보는가 절대로보는가 차이가 있다.
console.log('path.join: ', path.join(__dirname, '..', '..', '/tempDir' , '.', '/tempDirIn'));
console.log('path.resolve: ', path.resolve(__dirname, '..', '..', '/tempDir' , '.', '/tempDirIn'));
---- path 모듈 ----
파일 경로: D:\포트폴리오\_Study\Inflearn_nodeJS-Textbook\globalM.js
파일이 위치한 경로: D:\포트폴리오\_Study\Inflearn_nodeJS-Textbook
path.sep OS에따른 경로 구분자: \
path.delimiter 환경변수 구분자: ;
path.dirname() 파일경로: D:\포트폴리오\_Study\Inflearn_nodeJS-Textbook
path.extname() 파일확장자: .js
path.basename() 파일이름: globalM.js
path.parse() 파일정보 분해: { root: 'D:\\',
dir: 'D:\\포트폴리오\\_Study\\Inflearn_nodeJS-Textbook',
base: 'globalM.js',
ext: '.js',
name: 'globalM' }
path.format() 파일정보 합침
path.normalize() 슬래시 역슬래시 경로 변경
경로: (./ 현재폴더 상대경로) , (../ 부모폴더 상대경로) , ( / 루트 절대경로)
path.isAbsolute() 경로가 절대인지 상대인지 확인: true
path.relative() A에서 B로가는 상대경로를 보여줌: ..\..\..
-- path.join: 절대경로를 무시하고 합침 , path.resoleve: 절대경로를 고려하고 합침 --
path.join: D:\포트폴리오\tempDir\tempDirIn
path.resolve: D:\tempDirIn

join과 resolve의 차이

Path.join은 상대경로 처리 path.resolve는 절대경로 처리합니다.

##URL

인터넷 주소를 쉽게 조작하도록 도와주는 모듈입니다.

WHATWG방식의 url과 노드에서 사용하던 url방식이 있습니다.

img

const url = require('url');

const URL = url.URL;
const myURL = new URL('http://www.wemakeprice.com/deal/adeal/3541228?search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1');

console.log('new URL(): ', myURL); // whatwg 방식 (search 처리 편리)
console.log('url.format(): ', url.format(myURL));
console.log('url.parse(): ', url.parse('http://www.wemakeprice.com/deal/adeal/3541228?search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1')); // 기존 방식 (호스트가없을때 사용가능)


console.log('---- searchParams ----');
console.log('searchParams: ', myURL.searchParams);
console.log('searchParams.getAll: ', myURL.searchParams.getAll('search_cate'));
console.log('searchParams.get: ', myURL.searchParams.get('search_keyword'));
console.log('searchParams.has: ', myURL.searchParams.has('page')); // 키가 있냐 없냐

console.log('searchParams.keys: ', myURL.searchParams.keys());
console.log('searchParams.values: ', myURL.searchParams.values());

myURL.searchParams.append('key추가', 'vlaue값'); // 주소에 &key추가=value값 이런식으로 추가가됨
myURL.searchParams.append('key추가', 'vlaue값2');
console.log('searchParams.getAll 추가후: ', myURL.searchParams.getAll('key추가'));

myURL.searchParams.set('key추가', '뉴 vlaue값'); // set은 기존에 있던걸 수정한다.
console.log('searchParams.getAll 수정후: ', myURL.searchParams.getAll('key추가'));

myURL.searchParams.delete('key추가'); // 삭제
console.log('searchParams.getAll 수정후: ', myURL.searchParams.getAll('key추가'));

console.log('searchParams.toString(): ', myURL.searchParams.toString());
new URL(): URL {
href: 'http://www.wemakeprice.com/deal/adeal/3541228?search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1',
origin: 'http://www.wemakeprice.com',
protocol: 'http:',
username: '',
password: '',
host: 'www.wemakeprice.com',
hostname: 'www.wemakeprice.com',
port: '',
pathname: '/deal/adeal/3541228',
search: '?search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1',
searchParams: URLSearchParams {
'search_cate' => 'top',
'search_keyword' => '샐러드',
'_service' => '4',
'_no' => '1',
'autocomp' => '1' },
hash: '' }
url.format(): http://www.wemakeprice.com/deal/adeal/3541228?search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1
url.parse(): Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.wemakeprice.com',
port: null,
hostname: 'www.wemakeprice.com',
hash: null,
search: '?search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1',
query: 'search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1',
pathname: '/deal/adeal/3541228',
path: '/deal/adeal/3541228?search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1',
href: 'http://www.wemakeprice.com/deal/adeal/3541228?search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1' }
---- searchParams ----
searchParams: URLSearchParams {
'search_cate' => 'top',
'search_keyword' => '샐러드',
'_service' => '4',
'_no' => '1',
'autocomp' => '1' }
searchParams.getAll: [ 'top' ]
searchParams.get: 샐러드
searchParams.has: false
searchParams.keys: URLSearchParamsIterator { 'search_cate', 'search_keyword', '_service', '_no', 'autocomp' }
searchParams.values: URLSearchParamsIterator { 'top', '샐러드', '4', '1', '1' }
searchParams.getAll 추가후: [ 'vlaue값', 'vlaue값2' ]
searchParams.getAll 수정후: [ '뉴 vlaue값' ]
searchParams.getAll 수정후: []
searchParams.toString(): search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1

querystring 모듈

console.log('---- querystring 모듈 예전 방식 파싱에 사용한다 ----');
const url = require('url');
const querystring = require('querystring');

const parseUrl = url.parse('http://www.wemakeprice.com/deal/adeal/3541228?search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1');
const query = querystring.parse(parseUrl.query);
console.log('파싱한 쿼리: ',query)
console.log('querystring.stringify: ',querystring.stringify(query));
---- querystring 모듈 예전 방식 파싱에 사용한다 ----
파싱한 쿼리: { search_cate: 'top',
search_keyword: '샐러드',
_service: '4',
_no: '1',
autocomp: '1' }
querystring.stringify: search_cate=top&search_keyword=%EC%83%90%EB%9F%AC%EB%93%9C&_service=4&_no=1&autocomp=1