一文掌握nodejs中的核心概念

1. 事件循环与非阻塞 I/O

概述: 允许 Node.js 在单线程的情况下执行非阻塞 I/O 的机制。

组成部分:

  • 调用栈: 执行同步代码。
  • 回调队列: 存放在异步操作完成后等待执行的回调函数。
  • 事件循环: 检查调用栈是否为空,然后从回调队列中获取回调函数。

重要函数:

  • process.nextTick(): 将回调函数放入单独的队列中,在下一个事件循环周期之前运行。
  • setImmediate(): 将回调函数排入下一个事件循环周期中执行。
  • 含义: 了解这一点有助于优化应用程序性能,并避免潜在的问题。
const fs = require('fs');  
fs.readFile('./file.txt', (err, data) => {
   
     
if (err) throw err;  
console.log(data);  
});  
console.log('正在读取文件…');

2. 缓冲区

概述: V8 堆之外的原始内存分配。

用途:

  • 读取或写入文件系统。
  • 处理来自网络协议的二进制数据。
  • 通用的二进制数据操作。

重要方法:

  • 创建: Buffer.alloc()Buffer.from()
  • 访问和修改: buf.readUInt8()buf.writeUInt8()
  • 转换: buf.toString()
const buf = Buffer.from('Hello, Node.js', 'utf-8');  
console.log(buf); // 输出原始缓冲区数据。

3. 流

概述: 用于流式数据的抽象。

类型:

  • 可读流: 用于数据消耗(例如 fs.createReadStream())。
  • 可写流: 用于数据生产(例如 fs.createWriteStream())。
  • 双工流: 可读可写。
  • 转换流: 在读取和写入时可以修改数据。

关键事件:

  • data:当块可用时。
  • end:没有更多的数据可读取。
  • error:发生错误时。
  • finish:写入完成。
const fs = require('fs');  
const readStream = fs.createReadStream('./largeFile.txt', 'utf8');  
readStream.on('data'
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值