第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號(hào)安全,請(qǐng)及時(shí)綁定郵箱和手機(jī)立即綁定

NodeJS stream入門(mén)

標(biāo)簽:
Node.js JavaScript

本文简介

点赞 + 关注 + 收藏 = 学会了


Stream 是一个概念,翻译成中文就是 “流” 的意思。它并非 NodeJS 独有。

本文就用 NodeJS 举例说明 Stream



Stream 简介

在传输大文件、视频、音频时,通常是分段传输的,可以把这个概念粗略的理解成 Stream

Stream 的中文意思是 “流” ,我在网上找了个图很好的讲明这个东西。

file

传多少过来就接多少,而这个传输过程我们使用 NodeJS 时是不需要关心的,因为 NodeJS 提供了对应的方法来处理。

在 [《NodeJS http请求》]中讲到的 POST 方法,其实也用了这个概念。

Stream用法

我使用 复制文件内容 为例子说明 Stream


如果文件内容很少,我们是可以一次复制完的。但如果文件内容很多,最好就使用 “分包” 复制的方式。而这些 NodeJS 都为我们处理好了。


我准备了3个文件,它们分别是 index.jsdata.txtdata-backup.txt

  • index.js 是编写 JS 操作代码的文件
  • data.txt 是数据文件
  • data-backup.txt 是备份数据的文件,默认为空

data.txt 文件内容

123
456
789
0

只有这10个数字


index.js 文件内容

const fs = require('fs')
const path = require('path')

const fileName1 = path.resolve(__dirname, 'data.txt')
const fileName2 = path.resolve(__dirname, 'data-backup.txt')

const readStream = fs.createReadStream(fileName1)
const writeStream = fs.createWriteStream(fileName2)

readStream.pipe(writeStream)

let count = 0

readStream.on('data', chunk => {
  console.log(`第 ${++count} 次传输`)
  console.log(chunk.toString())
})

readStream.on('end', () => {
  console.log('复制完成')
})

解析:

  • 首先引入 fspath 模块,可对文件进行操作
  • 获取 data.txtdata-backup.txt 文件,并分别赋值给 fileName1fileName2
  • 使用 pipe 方法,将 data.txt 的内容流向 data-backup.txt
  • 使用 count 计算分包数量
  • 使用 on - data 来监听数据传输的过程
  • 使用 on - end 来监听数据传输完成

此时运行 index.js ,控制台就会输出

第 1 次传输
123
456
789
0
复制完成

在内容比较少时,看不出 Stream 的作用。


但如果此时让 data.txt 内容变多,比如里面有10万个单词。那就能看出 Stream 的作用了。


VS Code 中,将 data.txt 的语言模式改成 HTML

file


然后输入 lorem100000 然后按回车,就能自动帮输入10万个单词。 lorem 后面加的数字就是要输入的单词书。

file


按下回车后

file


保存 data.txt ,然后再执行 index.js

此时打开控制台就可以看到分包的情况了。

file

以上就是 Stream 的简单介绍。



总结

Stream 可以理解为分包,“流” 的意思就是一点点流过来,而不是一次把所有搬过来。

你可以想象一下搬家的情况,如果你在一个地方生活了一段时间,生活用品、家具各种东西都多起来后,基本不可能一次把所有东西都搬走。通常你需要把东西一份份打包好,然后一份份搬到楼下,再搬上车运走。这就是 Stream 的概念。


再比如电视直播,如果把直播内容都录好,再一次过打包发送到你的客户端,那就不可能做到直播了对吧。通常都是录多少就发送多少。



點(diǎn)擊查看更多內(nèi)容
TA 點(diǎn)贊

若覺(jué)得本文不錯(cuò),就分享一下吧!

評(píng)論

作者其他優(yōu)質(zhì)文章

正在加載中
  • 推薦
  • 評(píng)論
  • 收藏
  • 共同學(xué)習(xí),寫(xiě)下你的評(píng)論
感謝您的支持,我會(huì)繼續(xù)努力的~
掃碼打賞,你說(shuō)多少就多少
贊賞金額會(huì)直接到老師賬戶(hù)
支付方式
打開(kāi)微信掃一掃,即可進(jìn)行掃碼打賞哦
今天注冊(cè)有機(jī)會(huì)得

100積分直接送

付費(fèi)專(zhuān)欄免費(fèi)學(xué)

大額優(yōu)惠券免費(fèi)領(lǐng)

立即參與 放棄機(jī)會(huì)
微信客服

購(gòu)課補(bǔ)貼
聯(lián)系客服咨詢(xún)優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動(dòng)學(xué)習(xí)伙伴

公眾號(hào)

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號(hào)

舉報(bào)

0/150
提交
取消