基本内置模块
Node.js 提供了一系列的内置模块(也称为核心模块),这些模块提供了对文件系统、网络、操作系统等底层功能的访问。以下是一些常用的 Node.js 内置模块及其简要介绍:
1. fs - 文件系统
用于读取和写入文件,创建和删除目录,更改文件权限等操作。
- 常用方法:
fs.readFile(),fs.readFileSync():异步或同步地读取文件。fs.writeFile(),fs.writeFileSync():异步或同步地写入文件。fs.readdir(),fs.readdirSync():异步或同步地读取目录内容。fs.mkdir(),fs.mkdirSync():异步或同步地创建目录。fs.unlink(),fs.unlinkSync():异步或同步地删除文件。
javascript
const fs = require("fs");
fs.readFile("example.txt", "utf8", (err, data) => {
if (err) throw err;
console.log(data);
});
提供实用工具来处理和转换文件路径。
- 常用方法:
path.join():将多个路径片段连接起来。path.resolve():解析相对路径为绝对路径。path.basename():获取路径中的文件名部分。path.dirname():获取路径中的目录名部分。path.extname():获取路径中的扩展名部分。path.parse():将路径解析为对象。path.sep:获取路径分隔符。
javascript
const path = require("path");
console.log(path.join("/foo", "bar", "baz")); // 输出: /foo/bar/baz
const absPath = path.resolve(__dirname, "example.txt"); // 输出: /Users/example/example.txt3. http 和 https - HTTP/HTTPS 服务器与客户端
用于创建 HTTP 或 HTTPS 服务器以及发起 HTTP 请求。
- 常用方法:
http.createServer():创建一个 HTTP 服务器实例。http.request():发起 HTTP 请求。https.get():发起 GET 请求。
javascript
const http = require("http");
const server = http.createServer((req, res) => {
res.writeHead(200, { "Content-Type": "text/plain" });
res.end("Hello World\n");
});
server.listen(1337, "127.0.0.1");
提供关于操作系统的信息,如 CPU 架构、内存使用情况等。
- 常用属性:
os.arch():返回操作系统的 CPU 架构。os.platform():返回操作系统的平台名称。os.totalmem():返回总物理内存大小。os.cpus():返回 CPU 核心信息数组。os.homedir():返回当前用户的主目录。os.tmpdir():返回临时目录的路径。
javascript
const os = require("os");
console.log(`Platform: ${os.platform()}, Arch: ${os.arch()}`);5. url - URL 解析
用于解析和构建 URL 字符串。
- 常用方法:
new URL(urlString):创建一个新的 URL 对象。url.parse():解析 URL 字符串。url.format():从 URL 对象生成 URL 字符串。
javascript
const url = require("url");
const myUrl = new URL("https://example.com/path?query=string#fragment");
console.log(myUrl.hostname); // 输出: example.com
console.log(myUrl.searchParams); // 输出: URLSearchParams { 'query' => 'string' }6. querystring - 查询字符串解析
用于解析和构造查询字符串。
- 常用方法:
querystring.parse():解析查询字符串为对象。querystring.stringify():将对象转换为查询字符串。
javascript
const querystring = require("querystring");
const qs = querystring.stringify({ foo: "bar", baz: ["qux", "quux"] });
console.log(qs); // 输出: foo=bar&baz=qux&baz=quux7. util - 实用工具
提供一些有用的工具函数,比如继承、格式化输出等。
- 常用方法:
util.inherits(constructor, superConstructor):实现类的继承。util.promisify(original):将回调风格的函数转换为返回 Promise 的函数。util.callbackify(original):将 Promise 风格的函数转换为回调风格的函数。util.isDeepStrictEqual(val1, val2):比较两个值是否深度严格相等。
javascript
const util = require("util");
const fs = require("fs");
// 将 fs.readFile 转换为 Promise 风格
const readFilePromise = util.promisify(fs.readFile);
readFilePromise("example.txt", "utf8")
.then((data) => console.log(data))
.catch((err) => console.error(err));
// 将 Promise 风格的函数转换为回调风格的函数
const callbackify = util.callbackify(readFilePromise);
callbackify(readFilePromise)("example.txt", "utf8", (err, data) => {});8. events - 事件驱动编程
提供了 EventEmitter 类,允许你订阅和发布事件。
- 常用方法:
EventEmitter.on(event, listener):监听特定事件。EventEmitter.emit(event, [...args]):触发特定事件。
javascript
const EventEmitter = require("events");
class MyEmitter extends EventEmitter {}
const myEmitter = new MyEmitter();
myEmitter.on("event", () => {
console.log("an event occurred!");
});
myEmitter.emit("event");9. child_process - 子进程管理
用于创建和管理子进程,可以执行外部命令。
- 常用方法:
child_process.spawn(command[, args][, options]):启动新进程并与其通信。child_process.exec(command[, options], callback):执行命令并将结果作为参数传递给回调函数。
javascript
const { exec } = require("child_process");
exec("ls -lh /usr", (error, stdout, stderr) => {
if (error) {
console.error(`执行出错: ${error.message}`);
return;
}
if (stderr) {
console.error(`stderr: ${stderr}`);
return;
}
console.log(`stdout: ${stdout}`);
});总结
以上只是 Node.js 中一部分最常用的核心模块。每个模块都有其独特的用途,帮助开发者更高效地构建应用程序和服务。