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/

相关推荐
__zRainy__12 小时前
Node.js readline 全景指南:createInterface 配置、逐行读取与交互模式
node.js·readline
To_OC13 小时前
拼路径读文件总踩坑?我把 Node 的 path 和 fs 彻彻底底捋了一遍
javascript·后端·node.js
星栈1 天前
从装一堆工具到看懂 Node 工程化思维:我的项目复盘记录
后端·node.js
东方小月1 天前
从零开发一个Coding Agent:monorepo项目搭建
前端·后端·node.js
Lihua奏1 天前
# 用 Node.js 连接数据库:一次请求是怎么跑起来的?
node.js
kisshyshy1 天前
给端侧大模型装上“发动机”:React 合成事件 + 进度条组件全解
前端·react.js·node.js
csdn2015_1 天前
nodejs安装
node.js·vue
前端双越老师2 天前
如何以前端视角(非0基础)学 Java ?
java·node.js·全栈
Kel2 天前
Node.js 没那么复杂
人工智能·node.js·全栈
星栈独行2 天前
Node 接口该写同步还是异步?
服务器·开发语言·后端·程序人生·node.js