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/

相关推荐
贩卖纯净水.4 小时前
Webpack的基本使用 - babel
前端·webpack·node.js
贩卖纯净水.6 小时前
Webpack依赖
前端·webpack·node.js
笑醉踏歌行8 小时前
NVM,Node.Js 管理工具
运维·ubuntu·node.js
chxii11 小时前
1.4 Node.js 的 TCP 和 UDP
node.js
xd000021 天前
11. vue pinia 和react redux、jotai对比
node.js
程序猿小D1 天前
第16节 Node.js 文件系统
linux·服务器·前端·node.js·编辑器·vim
前端老六喔1 天前
🎉 开源项目推荐 | 让你的 TypeScript/React 项目瘦身更简单!
node.js·前端工程化
醉书生ꦿ℘゜এ1 天前
npm error Cannot read properties of null (reading ‘matches‘)
前端·npm·node.js
超级土豆粉1 天前
从0到1写一个适用于Node.js的User Agent生成库
linux·ubuntu·node.js
空中湖2 天前
‘pnpm‘ 不是内部或外部命令,也不是可运行的程序
npm·node.js