Skip to content

基本内置模块

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.txt

3. httphttps - 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=quux

7. 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 中一部分最常用的核心模块。每个模块都有其独特的用途,帮助开发者更高效地构建应用程序和服务。

Released under the MIT License.