以下是 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}`);
});
五、最佳实践要点
-
异步优先:始终优先使用异步 API(回调/Promise/async-await),避免阻塞事件循环
-
错误处理 :所有回调函数必须检查
err
参数javascriptfs.readFile('file.txt', (err, data) => { if (err) { console.error('Read failed:', err.message); return; } // 正常处理 });
-
路径安全 :使用
path.join()
替代字符串拼接,避免跨平台问题 -
流式处理:大文件操作必须使用 Stream,防止内存溢出
-
环境区分 :通过
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/