前端必會的nodejs知識工具模塊使用示例詳解
Util
nodejs中有許多在框架中常用而我們又不知道的工具模塊,本文介紹下這幾個工具模塊,算是自己的一個知識回顧吧。
Node.js 的工具模塊
常用的判斷屬性,在util.types對象
- isDate:判斷是否是日期格式的變量
- isAnyArrayBuffer:判斷是否是buffer
- isAsyncFunction:判斷函數(shù)是否是異步的
let util = require('util'); // types: 判斷變量/函數(shù)的一些類型 const {isAnyArrayBuffer,isAsyncFunction,isDate} = util.types // isDate const is_date = isDate(new Date()) const is_date2 = isDate('2022-09-01') console.log('is_date2: ', is_date2); console.log('is_date: ', is_date); // isAnyArrayBuffer const isBuff1 = isAnyArrayBuffer('buffer') console.log('isBuff1: ', isBuff1); const isBuff2 = isAnyArrayBuffer(new ArrayBuffer(14)) console.log('isBuff2: ', isBuff2); // isAsyncFunction const f2 = async function function2(){} const f1 = function function1(){} const isAsyncFunc = isAsyncFunction(f1) const isAsyncFunc2 = isAsyncFunction(f2) console.log('isAsyncFunc2: ', isAsyncFunc2); console.log('isAsyncFunc: ', isAsyncFunc);
常用的方法和屬性
- format:格式化字符串
- inspect: 將對象轉(zhuǎn)為字符串
- isDeepStrictEqual:判斷兩個字符是否強相等,相當于===
- deprecate:將函數(shù)包裝為棄用
// inspect const obj = {name:'inspect',date:'2022-09-01'} const str = util.inspect(obj) console.log('str: ', str); // 格式化字符串util.format(arg1,arg2,arg3,arg4) const str2 = util.format('%s:%s','12','34','56') console.log('str2: ', str2); // deprecate util.deprecate(()=>{ console.log('this is a deprecate func') }) // isDeepStrictEqual const v1 = '2' const v2 = 2; const isEqual = util.isDeepStrictEqual(v1,v2) console.log('isEqual: ', isEqual); console.log(v1 == v2); console.log(v1 === v2);
DNS
Node.js DNS 模塊用于解析域名
- DNS(Domain Name System): 域名系統(tǒng)、
- 組成:他是由解析器和域名服務器組成
- 作用:域名解析,將域名轉(zhuǎn)換成IP地址,將IP地址轉(zhuǎn)換成域名列表
nodejs中DNS支持域名和對應IP地址的相互解析,主要代碼如下:
let dns = require("dns"); //lookup(底層系統(tǒng)工具進行):將域名(比如 'runoob.com')解析為第一條找到的記錄 A (IPV4)或 AAAA(IPV6)。 const hostname = "www.runoob.com"; dns.lookup(hostname, function (err, address, famliy) { if (!err) { console.log(hostname + "綁定的IP地址為:" + address); } }); //lookupService:實現(xiàn)給定的ip地址和端口號,解析為對應的域名 dns.lookupService("104.20.23.46", 80, (err, hostname, service) => { if (err) { console.log(err); } console.log("主機:" + hostname); console.log("協(xié)議:" + service); }); //resolve:使用網(wǎng)絡(luò)域名系統(tǒng) dns.resolve("nodejs.org", (err, address) => { if (err) { return; } console.log('resolve address: ', address); }); // reverse:反向解析 IP 地址,指向該 IP 地址的域名數(shù)組。 const ip = "192.30.252.130"; dns.reverse(ip, function (err, hostnames) { if (!err) { console.log(ip + "IP綁定的語言數(shù)組為:" + hostnames); } else { console.log(err); } }); // 返回當前正在使用的ip地址 const servers = dns.getServers(); console.log("current server ip address: ", servers);
OS
Node.js OS 模塊提供了一些基本系統(tǒng)操作函數(shù)
常用的方法和屬性
- networkInterfaces獲取網(wǎng)絡(luò)信息
- cpus:獲取系統(tǒng)的CPU內(nèi)核細膩,返回個數(shù)組
- totalmem:系統(tǒng)總共內(nèi)存容量
- freemem:系統(tǒng)空余內(nèi)存變量
- hostname:系統(tǒng)主機名
- version: 系統(tǒng)內(nèi)核版本的字符串
const os =require('os'); console.log('系統(tǒng)所有內(nèi)存變量為(單位M):',os.totalmem()/1024/1024); console.log('系統(tǒng)空余內(nèi)存變量為(單位M):',os.freemem()/1024/1024); console.log('系統(tǒng)主機名:',os.hostname()); console.log('系統(tǒng)主機內(nèi)核版本:',os.version());
- platform: 主機操作系統(tǒng)平攤
- type: 主機的操作系統(tǒng)平臺名稱,可能的值為'aix'、'darwin'、'freebsd'、'linux'、'openbsd'、'sunos'、以及 'win32'。
- uptime: 操作系統(tǒng)正常運行時間
console.log('主機的平臺:',os.platform()); console.log('主機的平臺名稱:',os.type()); console.log('主機的x正常運行時間:',os.uptime()/3600/24);
Path
nodejs用來處理文件路徑的工具模塊,主要處理絕對路徑,相對路徑
常用的方法和屬性
const path = require('path') //屬性- 平臺路徑的分隔符 const sep =path.sep; console.log('sep: ', sep); //屬性- 分隔符獲取 const delimiter = path.delimiter; console.log('delimiter: ', delimiter); //屬性- 提供上述 path 的方法,不過總是以 win32 兼容的方式交互。 const win32 = path.win32; // console.log('win32: ', win32); // resolve參數(shù)解析為絕對路徑 const r1 = path.resolve(__dirname,'../'); console.log('r1: ', r1); // join參數(shù)拼接為一個路徑 const j1 = path.join(r1,'http/app.js') console.log('j1: ', j1); // path.relative(from, to)用于將絕對路徑轉(zhuǎn)為相對路徑,返回從 from 到 to 的相對路徑(基于當前工作目錄) const r2 = path.relative(j1,'http/app.js') console.log('rl: ', r2); // isAbsolute判斷是否是絕對路徑 const isAbs1 = path.isAbsolute(r2) console.log('isAbs1: ', isAbs1); const isAbs2 = path.isAbsolute(j1) console.log('isAbs2: ', isAbs2); // path.dirname(p):返回路徑中代表文件夾的部分,同 Unix 的dirname 命令類似。 const dir = path.dirname(j1) console.log('dir: ', dir); // path.basename:返回路徑中的最后一部分。同 Unix 命令 bashname 類似。 const basename = path.basename(j1) console.log('basename: ', basename); // path.extname(p): 返回路徑中文件的后綴名,即路徑中最后一個'.'之后(包含'.')的部分。如果一個路徑中并不包含'.'或該路徑只包含一個'.' 且這個'.'為路徑的第一個字符,則此命令返回空字符串。 const extname = path.extname(j1); console.log('extname: ', extname); // path.parse(pathString):返回路徑字符串的對象,與path.format相反。 const pathObj = path.parse('D:\\demo\\demo\\nodejs\\http\\app.js') console.log('pathObj: ', pathObj); // path.format(pathObject):從對象中返回路徑字符串,和 path.parse 相反。 const pathStr = path.format(pathObj) console.log('pathStr: ', pathStr);
總結(jié)
nodejs中的util path os dns是我們開發(fā)web服務會常用的幾個模塊,再次做一了解很有必要。
以上就是前端必會的nodejs知識工具模塊使用示例詳解的詳細內(nèi)容,更多關(guān)于前端nodejs工具模塊的資料請關(guān)注腳本之家其它相關(guān)文章!
相關(guān)文章
node.js中RPC(遠程過程調(diào)用)的實現(xiàn)原理介紹
這篇文章主要介紹了node.js中RPC(遠程過程調(diào)用)的實現(xiàn)原理介紹,本文基于一個簡單的RPC庫nodejs light_rpc實現(xiàn),需要的朋友可以參考下2014-12-12node.js?中的require用法和import的區(qū)別解析
在Node.js中,require是一個內(nèi)置的函數(shù),用于在當前模塊中加載和緩存其他模塊,這篇文章給大家介紹node.js?中的require用法和import的區(qū)別,感興趣的朋友跟隨小編一起看看吧2024-04-04nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實例代碼
在本篇文章里小編給大家整理的是一篇關(guān)于nodejs對mongodb數(shù)據(jù)庫的增加修刪該查實例代碼,有需要的朋友們可以參考下。2020-01-01node.js中fs文件系統(tǒng)目錄操作與文件信息操作
本篇文章給大家詳細分析了node.js中fs文件系統(tǒng)目錄操作與文件信息操作的方法以及代碼詳解,需要的讀者可以參考下。2018-02-02Node.js中使用計時器定時執(zhí)行函數(shù)詳解
這篇文章主要介紹了Node.js中使用計時器定時執(zhí)行函數(shù)詳解,本文使用了Node.js中的setTimeout和setInterval函數(shù),需要的朋友可以參考下2014-08-08Node.js中的EventEmitter類使用小結(jié)
EventEmitter 是 Node.js 中的一個核心模塊,它提供了一種實現(xiàn)事件驅(qū)動編程的機制,它是一個基于觀察者模式的類,用于在應用程序中處理事件和觸發(fā)事件,這篇文章主要介紹了Node.js中的EventEmitter類介紹,需要的朋友可以參考下2023-12-12Docker平臺下NodeJs?Puppeteer實現(xiàn)html轉(zhuǎn)pdf過程示例
這篇文章主要為大家介紹了Docker平臺下NodeJs?Puppeteer實現(xiàn)html轉(zhuǎn)pdf過程示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪2023-12-12