当前位置: 首页 > news >正文

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}`);
});

五、最佳实践要点

  1. 异步优先:始终优先使用异步 API(回调/Promise/async-await),避免阻塞事件循环
  2. 错误处理:所有回调函数必须检查 err 参数
    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 区分开发/生产环境

六、常用第三方模块推荐

模块名用途安装命令
expressWeb 框架npm install express
axiosHTTP 客户端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/

http://www.dtcms.com/a/113484.html

相关文章:

  • 【Block总结】PlainUSR的局部注意力,即插即用|ACCV2024
  • Synopsys:设计对象
  • Scade One - 可视化编程体验
  • 如何高效使用 Ubuntu 中文官方网站
  • 【含文档+PPT+源码】基于Python的股票数据可视化及推荐系统的设计与实现
  • MobileDet(2020➕CVPR)
  • Unity:销毁(Destroy)
  • Qt多线程从基础到性能优化
  • 尚硅谷2019版多线程以及枚举类笔记记录
  • 量化交易----从0到1
  • 【开题报告+论文+源码】基于SpringBoot+Vue的爱家园管理系统
  • 一天一个java知识点----多线程
  • 虚拟Ashx页面,在WEB.CONFIG中不添加handlers如何运行
  • Linux系统之chkconfig命令详解
  • P1036 [NOIP 2002 普及组] 选数(DFS)
  • LeetCode算法题(Go语言实现)_32
  • 详解七大排序
  • 什么是RPC通信
  • 【spring cloud Netflix】Ribbon组件
  • 供应链业务-供应链全局观(二)
  • 蓝桥云客--回文数组
  • 迈向未来:数字化工厂管理如何重塑生产力
  • OpenGL学习笔记(简介、三角形、着色器、纹理、坐标系统、摄像机)
  • 数据库系统概述 | 第三章课后习题答案
  • 蓝桥杯_PCF8591
  • (二)输入输出处理——打造智能对话的灵魂
  • 如何使用 Nginx 代理 Easysearch 服务
  • 洛谷题单3-P5725 【深基4.习8】求三角形-python-流程图重构
  • C语言求3到100之间的素数
  • C++蓝桥杯实训篇(二)