Node.js核心模块及Api详解

以下是 Node.js 最常用的核心模块及 API 详解,按使用频率和重要性分类整理:


一、高频核心模块

1. fs 文件系统
javascript 复制代码
const fs = require('fs');
const fsPromises = require('fs').promises; // Promise 版本

// 异步读取文件(推荐)
fs.readFile('file.txt', 'utf8', (err, data) => {
  if (err) throw err;
  console.log(data);
});

// Promise 方式读取(ES6+)
fsPromises.readFile('file.txt', 'utf8')
  .then(data => console.log(data))
  .catch(console.error);

// 同步读取(慎用)
const data = fs.readFileSync('file.txt', 'utf8');

// 写文件
fs.writeFile('new.txt', 'Hello World', err => {
  if (err) throw err;
});

// 目录操作
fs.readdir('./', (err, files) => {
  console.log(files); // 获取目录文件列表
});

// 文件状态
fs.stat('file.txt', (err, stats) => {
  console.log(stats.isFile()); // 是否文件
  console.log(stats.size); // 文件大小
});
2. path 路径处理
javascript 复制代码
const path = require('path');

// 拼接路径(跨平台)
const fullPath = path.join(__dirname, 'subdir', 'file.txt');

// 解析绝对路径
path.resolve('src', 'app.js'); // 等同于 __dirname + '/src/app.js'

// 获取文件名/扩展名
path.basename('/foo/bar/baz.txt'); // 'baz.txt'
path.extname('index.html'); // '.html'

// 路径解析
path.parse('/home/user/file.txt');
/* 返回:
{
  root: '/',
  dir: '/home/user',
  base: 'file.txt',
  ext: '.txt',
  name: 'file'
} */
3. http 网络服务
javascript 复制代码
const http = require('http');

// 创建服务器
const server = http.createServer((req, res) => {
  res.writeHead(200, { 'Content-Type': 'text/plain' });
  res.end('Hello World');
});

server.listen(3000, () => {
  console.log('Server running on port 3000');
});

// 发起 HTTP 请求
http.get('http://api.example.com', (response) => {
  let data = '';
  response.on('data', chunk => data += chunk);
  response.on('end', () => console.log(data));
});

二、中高频工具模块

1. events 事件触发器
javascript 复制代码
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// 监听事件
myEmitter.on('event', (arg) => {
  console.log('Event triggered:', arg);
});

// 触发事件(可传参)
myEmitter.emit('event', { data: 123 });

// 一次性监听
myEmitter.once('single', () => console.log('Only once'));
2. stream 流处理
javascript 复制代码
const fs = require('fs');

// 读取流
const readStream = fs.createReadStream('bigfile.txt', 'utf8');

readStream.on('data', chunk => {
  console.log('Received chunk:', chunk.length);
});

readStream.on('end', () => {
  console.log('File read complete');
});

// 写入流
const writeStream = fs.createWriteStream('output.txt');
writeStream.write('Line 1\n');
writeStream.end('Final line');
3. util 实用工具
javascript 复制代码
const util = require('util');

// 回调转 Promise
const readFileAsync = util.promisify(fs.readFile);

// 继承检查
util.types.isDate(new Date()); // true

// 深度对象调试
console.log(util.inspect(obj, { depth: null }));

三、常用全局对象

1. process 进程控制
javascript 复制代码
// 环境变量
console.log(process.env.NODE_ENV);

// 命令行参数
process.argv.forEach((val, index) => {
  console.log(`${index}: ${val}`);
});

// 退出程序
process.exit(1); // 非零表示异常退出

// 标准输入输出
process.stdin.on('data', data => {
  process.stdout.write(`You typed: ${data}`);
});
2. Buffer 二进制处理
javascript 复制代码
// 创建 Buffer
const buf1 = Buffer.from('Hello');
const buf2 = Buffer.alloc(10); // 10字节空Buffer

// 写入数据
buf2.write('World');

// 转换格式
console.log(buf1.toString('base64')); // SGVsbG8=
console.log(Buffer.from('SGVsbG8=', 'base64').toString()); // Hello

四、其他关键 API

1. 定时器
javascript 复制代码
// setTimeout (单次)
const timer = setTimeout(() => {
  console.log('Delayed 1s');
}, 1000);

// clearTimeout(timer); // 取消

// setInterval (循环)
const interval = setInterval(() => {
  console.log('Every 2s');
}, 2000);

// clearInterval(interval);
2. child_process 子进程
javascript 复制代码
const { exec, spawn } = require('child_process');

// 执行 shell 命令
exec('ls -l', (err, stdout, stderr) => {
  console.log(stdout);
});

// 流式处理
const ls = spawn('ls', ['-lh', '/usr']);
ls.stdout.on('data', data => {
  console.log(`stdout: ${data}`);
});

五、最佳实践要点

  1. 异步优先:始终优先使用异步 API(回调/Promise/async-await),避免阻塞事件循环

  2. 错误处理 :所有回调函数必须检查 err 参数

    javascript 复制代码
    fs.readFile('file.txt', (err, data) => {
      if (err) {
        console.error('Read failed:', err.message);
        return;
      }
      // 正常处理
    });
  3. 路径安全 :使用 path.join() 替代字符串拼接,避免跨平台问题

  4. 流式处理:大文件操作必须使用 Stream,防止内存溢出

  5. 环境区分 :通过 process.env.NODE_ENV 区分开发/生产环境


六、常用第三方模块推荐

模块名 用途 安装命令
express Web 框架 npm install express
axios HTTP 客户端 npm install axios
lodash 实用工具库 npm install lodash
moment 日期处理 npm install moment
winston 日志记录 npm install winston
dotenv 环境变量加载 npm install dotenv

掌握这些核心 API 后,可快速应对 90% 的 Node.js 开发场景。建议结合官方文档深入理解:https://nodejs.org/api/

相关推荐
天丁o12 小时前
我把 AI 软文发布助手开源了:OpenArticleHub 的本地网页、发布台账和安全边界设计
node.js·ai工具·开源工具·软文发布·多平台发布
Patrick_Wilson13 小时前
K8s 探针避坑:Next.js 不同部署模式下的健康检查实践
kubernetes·node.js·next.js
我登哥MVP16 小时前
VS Code 安装 Claude Code 并接入 DeepSeek V4 Model
人工智能·python·node.js·agent·codex·deepseek·claude code
Patrick_Wilson17 小时前
Node.js SSR 内存治理:为什么 --max-old-space-size 不等于进程内存
kubernetes·node.js·v8
fred_kang19 小时前
Claude Code 在 Windows 切换 Node.js 版本后命令失效的排查与解决
node.js
xiaofeichaichai1 天前
Webpack
前端·webpack·node.js
Python私教1 天前
把开源 Agent 打包成"解压双击即用"的 Windows 便携包:一条命令的完整实现
node.js
没事别瞎琢磨1 天前
十一、审计与 Run Session——每一步操作都被记录
人工智能·node.js
没事别瞎琢磨1 天前
十六、AgentSandbox——把所有模块串起来的编排类
人工智能·node.js
没事别瞎琢磨1 天前
十二、网络代理与白名单规则引擎
人工智能·node.js