欢乐狗 发表于 2025-4-7 01:57:14

Node.js核心模块及Api详解

以下是 Node.js 最常用的核心模块及 API 详解,按利用频率和紧张性分类整理:
一、高频核心模块

1. fs 文件系统

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 路径处置惩罚

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 网络服务

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 事件触发器

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 流处置惩罚

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 实用工具

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 历程控制

// 环境变量
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 二进制处置惩罚

// 创建 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. 定时器

// 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 子历程

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 参数fs.readFile('file.txt', (err, data) => {
if (err) {
    console.error('Read failed:', err.message);
    return;
}
// 正常处理
});

[*]路径安全:利用 path.join() 替换字符串拼接,制止跨平台问题
[*]流式处置惩罚:大文件操纵必须利用 Stream,防止内存溢出
[*]环境区分:通过 process.env.NODE_ENV 区分开发/生产环境
六、常用第三方模块推荐

模块名用途安装命令expressWeb 框架npm install expressaxiosHTTP 客户端npm install axioslodash实用工具库npm install lodashmoment日期处置惩罚npm install momentwinston日记纪录npm install winstondotenv环境变量加载npm install dotenv 把握这些核心 API 后,可快速应对 90% 的 Node.js 开发场景。发起结合官方文档深入理解:https://nodejs.org/api/

免责声明:如果侵犯了您的权益,请联系站长,我们会及时删除侵权内容,谢谢合作!更多信息从访问主页:qidao123.com:ToB企服之家,中国第一个企服评测及商务社交产业平台。
页: [1]
查看完整版本: Node.js核心模块及Api详解