JavaScript (Node.js) 标准库:完整概述

面向初学者的在线Python训练器

轻松学习Python,无需理论负担。在浏览器中直接解决带自动检查的实践任务,无需安装任何东西。

开始课程

JavaScript (Node.js) 标准库:完整概述



Node.js 是一个基于 V8 引擎构建的 JavaScript 运行时环境。其主要优势之一在于拥有丰富的标准库,提供了数百个现成的模块,用于解决后端开发中的日常任务:从文件系统操作到创建 HTTP 服务器。在本文中,我们将介绍关键模块、它们的功能,并提供实用的代码示例。



1. fs 模块 (File System)

fs 模块是处理文件和目录的基础。它同时支持同步和异步操作。

  • 读取文件(异步):
const fs = require('fs');

fs.readFile('example.txt', 'utf8', (err, data) => { if (err) throw err; console.log(data);});
  • 写入文件:
fs.writeFile('output.txt', 'Hello, Node.js!', (err) => {    if (err) throw err;    console.log('文件已保存');});
  • 目录操作(创建、删除、读取):
// 创建文件夹fs.mkdir('newDir', { recursive: true }, (err) => {    if (err) throw err;    console.log('文件夹已创建');});

// 读取文件夹内容fs.readdir('.', (err, files) => { console.log(files); // 文件名数组});


2. path 模块

path 模块简化了文件和文件夹路径的处理,且与操作系统无关。

  • 路径拼接:
const path = require('path');

const fullPath = path.join('users', 'admin', 'docs', 'file.txt');console.log(fullPath); // 在 Linux 中为 users/admin/docs/file.txt,在 Windows 中为 users\\admin\\docs\\file.txt
  • 获取文件扩展名:
const ext = path.extname('image.png');console.log(ext); // '.png'
  • 路径规范化(去除多余的“..”和“.”):
const normalized = path.normalize('/foo/bar//baz/asdf/quux/..');console.log(normalized); // /foo/bar/baz/asdf


3. http 模块

允许创建 HTTP 服务器和客户端。Express.js 等框架正是基于此模块构建的。

  • 简单的 HTTP 服务器:
const http = require('http');

const server = http.createServer((req, res) => { res.writeHead(200, { 'Content-Type': 'text/plain' }); res.end('你好,世界!');});

server.listen(3000, () => { console.log('服务器已在端口 3000 上启动');});
  • HTTP 客户端(发起 GET 请求):
http.get('http://jsonplaceholder.typicode.com/posts/1', (res) => {    let data = '';    res.on('data', chunk => data += chunk);    res.on('end', () => console.log(JSON.parse(data)));});


4. events 模块

实现了“观察者”模式 (EventEmitter)。允许创建自定义事件并订阅它们。

const EventEmitter = require('events');

class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// 订阅事件myEmitter.on('greet', (name) => { console.log(`你好,${name}!`);});

// 触发事件myEmitter.emit('greet', '阿列克谢'); // 你好,阿列克谢!


5. buffer 模块

Buffer 是用于存储二进制数据的临时存储区。在处理流、文件、网络协议时使用。

// 从字符串创建缓冲区const buf = Buffer.from('Hello', 'utf8');console.log(buf); // <Buffer 48 65 6c 6c 6f>

// 缓冲区拼接const buf1 = Buffer.from('Node');const buf2

推荐