ノードの機能(3):ノードの内蔵モジュール
ノード内蔵モジュール
異なるバージョンの
オペレーティングシステムモジュール
os.arch():process.archと同じ
os.platform():process.プラットフォームと同じ
os.type():オペレーティングシステムのタイプを表示する
os.uptime():オペレーティングシステムが起動してからの実行時間を表示します.(process.uptime():ノードの実行時間)
os.hostname():コンピュータの名前を表示
os.release():オペレーティングシステムのバージョンを表示する
os.homedir():ホームディレクトリパスを表示
os.tmpdir():一時ファイルを格納するパスを表示
os.cpus():コンピュータのコア情報を表示する
os.cpus().length:カーネル数(ただし、ノード上で単一スレッドプログラミングを行う場合は1つのカーネルしか使用できません.ただし、クラスタモジュールを使用する場合はカーネル数に応じてプロセスを増やすことができます)
os.freemem():使用可能なメモリを表示(RAM)
os.totalmem():
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.uptime():', os.uptime());
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());
$ node os
운영체제 정보---------------------------------
os.arch(): x64 //process.arch와 동일
os.platform(): win32 //process.platform과 동일
os.type(): Windows_NT //운영체제의 종류를 보여줌
os.uptime(): 53354 //운영체제 부팅 이후 흐른 시간을 보여줌.
cf. process.uptime(): 노드의 실행 시간
os.hostname(): DESKTOP-RRANDNC //컴퓨터의 이름을 보여줌
os.release(): 10.0.18362 //운영체제의 버전을 보여줌
경로---------------------------------
os.homedir(): C:\Users\zerocho //홈 디렉터리 경로를 보여줌
os.tmpdir(): C:\Users\zerocho\AppData\Local\Temp
//임시 파일 저장 경로를 보여줌
cpu 정보---------------------------------
os.cpus(): [ { model: 'Intel(R) Core(TM) i5-9400F CPU @ 2.90GHz',
speed: 2904,
times: { user: 970250, nice: 0, sys: 1471906, idle: 9117578, irq: 359109 } },
// 컴퓨터의 코어 정보를 보여줌.
다른 코어가 있다면 나머지 코어의 정보가 나옴
]
os.cpus().length: 6
//코어의 개수가 나옴
(그러나 노드에서 싱글 스레드 프로그래밍을 하면 어차피 코어 1개만 사용함
-단, cluster모듈을 사용하는 경우 코어 개수에 맞춰서
프로세스 늘리기 가능)
메모리 정보---------------------------------
os.freemem(): 23378612224
//사용 가능한 메모리(RAM)를 보여줌
os.totalmem(): 34281246720
//전체 메모리 용량을 보여줌
path
(例)
ウィンドウ:C:UsersZeroCho
UNIXベースのオペレーティングシステム:MacおよびLinux(POSIX):/home/zerocho
filename:現在のファイルのパスを表示する
dirname:現在のフォルダのパスを表示する
path.sep:パスの区切り記号.ウィンドウは、POSIXは/
path.区切り記号:環境変数の区切り記号.ウィンドウはセミコロンです.POSIXは以下を含む:
process.env.PATH:複数のパスを表示する
path.dirname(パス):ファイルが存在するフォルダのパス
path.extname(パス):ファイルの拡張子
path.basename(パス、拡張子):拡張子を含むファイルの名前を表示します.ファイルの名前だけを表示するには、ファイルの拡張子をbasenameの2番目の引数として使用します.
path.parse(パス):ファイルパスをルート、dir、base、ext、nameに分割
path.format(オブジェクト):path.parse()オブジェクトをファイルパスにマージ
path.normalize(パス):または予期せぬ複数回使用または混合使用時に通常のパスに変換
path.isAbsolute(パス):ファイルのパスをtrueまたはfalse(絶対パスまたは相対パス)に通知します.
path.相対(標準パス、比較パス):2つのパスを挿入すると、最初のパスから2番目のパスへの移動方法を通知します.
path.join(パス、...):複数の引数を追加すると、1つのパスにマージされます.相対パス...(親ディレクトリ)と.(現在位置)も自己処理
path.resolve(パス,...):path.join()と似ていますが、差(絶対パス)
const path = require('path');
const string = __filename;
console.log('path.sep:', path.sep);
console.log('path.delimiter:', path.delimiter);
console.log('------------------------------');
console.log('path.dirname():', path.dirname(string));
console.log('path.extname():', path.extname(string));
console.log('path.basename():', path.basename(string));
console.log('path.basename - extname:', path.basename(string, path.extname(string)));
console.log('------------------------------');
console.log('path.parse()', path.parse(string));
console.log('path.format():', path.format({
dir: 'C:\\users\\zerocho',
name: 'path',
ext: '.js',
}));
console.log('path.normalize():', path.normalize('C://users\\\\zerocho\\\path.js'));
console.log('------------------------------');
console.log('path.isAbsolute(C:\\):', path.isAbsolute('C:\\'));
console.log('path.isAbsolute(./home):', path.isAbsolute('./home'));
console.log('------------------------------');
console.log('path.relative():', path.relative('C:\\users\\zerocho\\path.js', 'C:\\'));
console.log('path.join():', path.join(__dirname, '..', '..', '/users', '.', '/zerocho'));
console.log('path.resolve():', path.resolve(__dirname, '..', 'users', '.', '/zerocho'));
$ node path
path.sep: \ //경로의 구분자. 윈도는 \, POSIX는 /
path.delimiter: ; //환경 변수의 구분자. 윈도는 세미콜론;, POSIX는 :
//process.env.PATH: 여러 경로가 나타남
------------------------------
path.dirname(): C:\Users\zerocho // 첫번째 인자 경로. 파일이 위치한 폴더 경로
path.extname(): .js // 첫번째 인자 경로. 파일의 확장자
path.basename(): path.js // 첫번째 인자 경로. 파일의 이름(확장자 포함)을 표시. 파일의 이름만 표시하고 싶다면 basename의 두 번째 인수로 파일의 확장자를 넣으면 됨
path.basename - extname: path
------------------------------
path.parse() {
path.basename(): path.js
path.basename - extname: path
------------------------------
path.parse() {
root: 'C:\\',
dir: 'C:\\Users\\zerocho',
base: 'path.js',
ext: '.js',
name: 'path'
}
// 첫번째 인자 경로. 파일 경로를 root, dir, base, ext, name으로 분리
path.format(): C:\users\zerocho\path.js
// 첫 번째 인자 객체.
path.parse()한 객체를 파일 경로로 합침
path.normalize(): C:\users\zerocho\path.js
// 첫 번째 인자 경로. /나 \를 실수로 여러 번 사용했거나 혼용했을 때 정상적인 경로로 변환
------------------------------
path.isAbsolute(C:\\): true
path.isAbsolute(./home): false
// 첫 번째 인자 경로. 파일의 경로가 절대경로인지 상대경로인지를 true나 false로 알림
------------------------------
path.relative(): ..\..\..
//첫 번째 인자 기준경로. 두 번째 인자 비교경로.
첫 번째 경로에서 두 번째 경로로 가는 방법을 알림
path.join(): C:\Users\zerocho
//여러 인수를 넣으면 하나의 경로로 합침. 상대경로인 ..(부모 디렉터리)과 .(현 위치)도 알아서 처리
path.resolve(): C:\zerocho
//path.join()과 비슷하지만 차이 존재(절대경로)
/に遭遇した場合、path.resolveは、ルートフォルダまたはノードプロセスに基づいて実行される絶対パスと見なし、前のパスは無視しますがpath.joinは、相対パス(現在のファイルは-require.mainに基づいている)を使用して
path.join('/a','/b','c'); /* 결과: /a/b/c */
path.resolve('/a','/b','c'); /* 결과: /b/c */
js文字列には(特殊文字であるため)が使用されます.
それ以外の場合は
複雑ですが、pathを使用するとすべての問題を解決できます.
別のスタイルのパスを使用
: path.posix.sepまたはpath.posix.join()
: path.win32.sepまたはpath.win32.join()
url
モジュール
(ノード7バージョン後)WHTWG
(以前のノードから使用)既存url
pathname部分のアドレスのみで、host部分はありません.
例:/book/bookList.apsx
WHATWG方式
整理済みアドレス
プロパティにはusername、password、origin、searchParams(テーブルの先頭にキー=値でデータを渡し、複数のキーがある場合は&で区切る)が含まれます.
伝統的な方式.
ぶんかいアドレス
属性には、usernameやpasswordではなくauth、searchParamsではなくqueryなどが含まれます.
WHATWG方式のurlも既存ノードのurlも利用可能である.
分解したurlオブジェクトを元の状態に再アセンブリします.
const url = require('url');
const { URL } = url;
const myURL = new URL('http://www.gilbut.co.kr/book/bookList.aspx?sercate1=001001000#anchor');
console.log('new URL():', myURL);
console.log('url.format():', url.format(myURL));
console.log('------------------------------');
const parsedUrl = url.parse('http://www.gilbut.co.kr/book/bookList.aspx?sercate1=001001000#anchor');
console.log('url.parse():', parsedUrl);
console.log('url.format():', url.format(parsedUrl));
new URL(): URL {
href: 'http://www.gilbut.co.kr/book/bookList.aspx?sercate1=001001000#anchor',
origin: 'http://www.gilbut.co.kr',
protocol: 'http:',
username: '',
password: '',
host: 'www.gilbut.co.kr',
hostname: 'www.gilbut.co.kr',
port: '',
pathname: '/book/bookList.aspx',
search: '?sercate1=001001000',
searchParams: URLSearchParams { 'sercate1' => '001001000' },
hash: '#anchor'
}
url.format(): http://www.gilbut.co.kr/book/bookList.aspx?sercate1=001001000#anchor
------------------------------
url.parse(): Url {
protocol: 'http:',
slashes: true,
auth: null,
host: 'www.gilbut.co.kr',
port: null,
hostname: 'www.gilbut.co.kr',
hash: '#anchor',
search: '?sercate1=001001000',
query: 'sercate1=001001000',
pathname: '/book/bookList.aspx',
path: '/book/bookList.aspx?sercate1=001001000',
href: 'http://www.gilbut.co.kr/book/bookList.aspx?sercate1=001001000#anchor'
}
url.format(): http://www.gilbut.co.kr/book/bookList.aspx?sercate1=001001000#anchor
WHATWGのSearchParamsについてWHATWGはsearch部分をsearchParamsという特殊なオブジェクトに戻すために非常に有用である.
searchは、アドレスを介してデータを転送するために使用されます.
searchは疑問符(?)データ
queryはquerystringモジュール
.getall(鍵):鍵に対応するすべての値を取得します.categoryキーにはnodejsとjavascriptの2つの値があります.
.get(キー):キーに対応する最初の値のみ取得
.has(鍵):鍵が存在するかどうかを確認する
.keys():searchParamsのすべてのキーを反復オブジェクトとしてインポートします(ES 2015構文).
.values():searchParamsのすべての値を反復オブジェクトとしてインポート
.append(キー、値):キーを追加します.同じキーの値がある場合は、保持して追加します.
.set(キー、値):appendと同様ですが、同じキーの値をすべて削除し、新しいキーを追加します.
.delete(鍵):鍵の削除
.toString():操作したsearchParamsオブジェクトを文字列に再設定します.この文字列をsearchに代入すると、アドレスオブジェクトに反映されます.
const { URL } = require('url');
const myURL = new URL('http://www.gilbut.co.kr/?page=3&limit=10&category=nodejs&category=javascript');
console.log('searchParams:', myURL.searchParams);
console.log('searchParams.getAll():', myURL.searchParams.getAll('category'));
console.log('searchParams.get():', myURL.searchParams.get('limit'));
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('filter', 'es3');
myURL.searchParams.append('filter', 'es5');
console.log(myURL.searchParams.getAll('filter'));
myURL.searchParams.set('filter', 'es6');
console.log(myURL.searchParams.getAll('filter'));
myURL.searchParams.delete('filter');
console.log(myURL.searchParams.getAll('filter'));
console.log('searchParams.toString():', myURL.searchParams.toString());
myURL.search = myURL.searchParams.toString();
searchParams: URLSearchParams {
'page' => '3',
'limit' => '10',
'category' => 'nodejs',
'category' => 'javascript' }
searchParams.getAll(): [ 'nodejs', 'javascript' ]
searchParams.get(): 10
searchParams.has(): true
searchParams.keys(): URLSearchParams Iterator { 'page', 'limit', 'category', 'category' }
searchParams.values(): URLSearchParams Iterator { '3', '10', 'nodejs', 'javascript' }
[ 'es3', 'es5' ]
[ 'es6' ]
[]
searchParams.toString(): page=3&limit=10&category=nodejs&category=javascript
querystring既存ノードのurlを使用する場合、モジュール
Reference
この問題について(ノードの機能(3):ノードの内蔵モジュール), 我々は、より多くの情報をここで見つけました https://velog.io/@nahyunbak/노드의-기능3-노드의-내장-모듈テキストは自由に共有またはコピーできます。ただし、このドキュメントのURLは参考URLとして残しておいてください。
Collection and Share based on the CC Protocol