Node.js 提供了一系列丰富的内置模块,这些模块覆盖了文件系统操作、网络编程、数据处理等多个方面,使得开发者能够高效地进行服务器端开发。
os
- 提供与操作系统相关的实用方法。
- 常用方法:
os.EOL:一行结束后的分隔符。os.arch():返回一个字符串,表示Node.js进程的CPU架构,如'x64'或'arm'。os.cpus():返回一个数组,包含有关CPU的信息,如模型、速度(以MHz为单位)和核心数。os.freemem():获取系统空闲内存。(可用内存量)os.homedir():返回用户的主目录路径。os.hostname():返回一个字符串,表示计算机的主机名。os.tmpdir():回一个字符串,表示系统的临时文件目录路径。
path
- 常用方法:
basename():获取路径的最后一部分。sep:文件系统中的分隔符(\)delimiter:操作系统特定的路径分隔符(:)dirname():获取路径的目录名extname():获取路径的扩展名join():连接一个或多个路径段(拼接成完整的路径)normalize():规范化路径,解析'..'和'.'等特殊符号relative():计算从one到two的相对路径(右边相对于左边)resolve():使用路径解析一个绝对路径(相对于当前模块下的绝对路径:resolve(__dirname,"./a.js"))
url
url模块是一个核心模块,提供了解析、格式化和解析URL的工具。它允许你将URL分解为其组成部分,轻松地操作查询字符串,并以编程方式构建或修改URL。此外,url模块还提供了解析查询字符串的功能。
const URL=require("url")
const url=new URL.URL("https://nodejs.org/dist/latest-v12.x/docs/api/url.html")
console.log(url)
- 常用方法:
- 解析URL
const url = require('url');
const myUrl = 'http://example.com:3000/pathname? search=test#hash';
const parsedUrl = new URL(myUrl);
console.log(parsedUrl.href); // 输出完整的URL
console.log(parsedUrl.protocol); // 输出协议,如 'http:'
console.log(parsedUrl.hostname); // 输出主机名,如
'example.com'
console.log(parsedUrl.port); // 输出端口,如 '3000'
console.log(parsedUrl.pathname); // 输出路径,如 '/pathname'
console.log(parsedUrl.search); // 输出查询字符串,如 '
search=test'
console.log(parsedUrl.hash); // 输出片段标识符,如
'#hash'
- url.format():格式化URL
const formattedUrl = url.format({
protocol: 'http',
hostname: 'example.com',
port: 3000,
pathname: '/pathname',
query: { search: 'test' },
hash: 'hash'
});
console.log(formattedUrl); // 输出 'http://example.com:3000/pathname?search=test#hash'
util
util模块提供了一些实用功能,用于执行常见的任务,比如格式化、调试、流操作等。
callbackify:将基于Promise的异步函数转换为传统的回调函数。
const util = require("util");
async function delay(duration = 1000) {
return new Promise((resolve) => {
setTimeout(() => {
resolve(duration);
}, duration);
});
}
const delayCallback =util.callbackify(delay)
//delay(500).then(d => {
// console.log(d);
//});
delayCallback(500,(err,d) => {
console.log(d)
})
promisify:将回调风格的函数转换为返回Promise的函数。
function delayCallBack(duration, callback) {
setTimeout(() => {
callback(null, duration);
}, duration);
}
const delay = util.promisify(delayCallBack);
//delay(500).then(d => console.log(d));
(async () => {
const r = await delay(500);
console.log(r);
})();
isDeepStrictEqual:检查两个值是否深度相等(包括它们的内容和类型)。
const { isDeepStrictEqual } = require('util');
const obj1 = { a: 1, b: { c: 2 } };
const obj2 = { a: 1, b: { c: 2 } };
const obj3 = { a: 1, b: { c: 3 } };
console.log(isDeepStrictEqual(obj1, obj2)); // 输出: true
console.log(isDeepStrictEqual(obj1, obj3)); // 输出: false
inherits:实现JavaScript中的类继承。
const util = require('util');
function BaseClass(name) {
this.name = name;
}
BaseClass.prototype.sayHello = function() {
console.log(`Hello, my name is ${this.name}`);
};
function DerivedClass(name) {
BaseClass.call(this, name);
}
util.inherits(DerivedClass, BaseClass);
const obj = new DerivedClass('Alice');
obj.sayHello(); // 输出: Hello, my name is Alice