前端必會的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: 將對象轉為字符串
- 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)、
- 組成:他是由解析器和域名服務器組成
- 作用:域名解析,將域名轉換成IP地址,將IP地址轉換成域名列表
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:使用網絡域名系統(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獲取網絡信息
- cpus:獲取系統(tǒng)的CPU內核細膩,返回個數(shù)組
- totalmem:系統(tǒng)總共內存容量
- freemem:系統(tǒng)空余內存變量
- hostname:系統(tǒng)主機名
- version: 系統(tǒng)內核版本的字符串
const os =require('os');
console.log('系統(tǒng)所有內存變量為(單位M):',os.totalmem()/1024/1024);
console.log('系統(tǒng)空余內存變量為(單位M):',os.freemem()/1024/1024);
console.log('系統(tǒng)主機名:',os.hostname());
console.log('系統(tǒng)主機內核版本:',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)用于將絕對路徑轉為相對路徑,返回從 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);
總結
nodejs中的util path os dns是我們開發(fā)web服務會常用的幾個模塊,再次做一了解很有必要。
以上就是前端必會的nodejs知識工具模塊使用示例詳解的詳細內容,更多關于前端nodejs工具模塊的資料請關注腳本之家其它相關文章!
相關文章
Node.js實現(xiàn)讀取Excel數(shù)據并插入MySQL
這篇文章主要為大家詳細介紹了Node.js如何實現(xiàn)讀取Excel數(shù)據并插入到MySQL數(shù)據庫中,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下2023-11-11
詳解如何在Node.js的httpServer中接收前端發(fā)送的arraybuffer數(shù)據
這篇文章主要介紹了詳解如何在Node.js的httpServer中接收前端發(fā)送的arraybuffer數(shù)據,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-11-11

