Konsep Utama:
- aliran node.js, asynchronous dan event-driven, mengoptimumkan I/O dengan mengendalikan data dalam bahagian yang boleh diurus.
- aliran diklasifikasikan sebagai boleh dibaca, boleh ditulis, atau dupleks (kedua -duanya boleh dibaca dan boleh ditulis). Aliran yang boleh dibaca mengambil data dari sumber; aliran yang boleh ditulis menghantar data ke destinasi.
- fungsi
- tidak ternilai, memudahkan pemindahan data lancar antara sumber dan destinasi tanpa pengurusan aliran manual.
pipe()
kaedah seperti - ,
Readable.pause()
, danReadable.resume()
menawarkan kawalan berbutir ke atas aliran data, meningkatkan fungsi aliran.readable.unpipe()
Memahami Streams:
aliran sama dengan paip UNIX, membolehkan pemindahan data tanpa usaha dari sumber ke destinasi. Pada asasnya, aliran adalah dengan kaedah khusus. Kaedah yang dilaksanakan menentukan sama ada aliran boleh dibaca, boleh ditulis, atau dupleks. Aliran yang boleh dibaca memberikan input data; Aliran yang boleh ditulis mengendalikan output data. EventEmitter
menyediakan keupayaan aliran fail yang boleh dibaca dan ditulis. fs
aliran yang boleh dibaca:
Aliran yang boleh dibaca membaca data dari sumber (fail, penampan dalam memori, atau aliran lain). Menjadi s, mereka mencetuskan pelbagai peristiwa. Kami menggunakan peristiwa ini untuk berinteraksi dengan sungai. EventEmitter
Membaca dari sungai:
Pendekatan yang paling biasa adalah untuk mendengar acara dan melampirkan panggilan balik. Apabila data tersedia, kebakaran acara data
, melaksanakan panggilan balik. data
const fs = require('fs'); const readableStream = fs.createReadStream('file.txt'); let data = ''; readableStream.on('data', (chunk) => { data += chunk; }); readableStream.on('end', () => { console.log(data); });
Mewujudkan aliran yang boleh dibaca. Pada mulanya statik, ia mula mengalir apabila melampirkan pendengar acara fs.createReadStream()
. Potongan data kemudiannya diserahkan kepada panggilan balik. Kekerapan peristiwa data
ditentukan oleh pelaksanaan aliran (mis., Permintaan HTTP mungkin memancarkan peristiwa setiap kb, manakala aliran fail mungkin memancarkan setiap baris). data
memberi isyarat akhir data. end
pada contoh aliran sehingga semua data dibaca: read()
const fs = require('fs'); const readableStream = fs.createReadStream('file.txt'); let data = ''; readableStream.on('data', (chunk) => { data += chunk; }); readableStream.on('end', () => { console.log(data); });
read()
mengambil data dari penampan dalaman. Ia kembali null
apabila tiada data kekal. Acara readable
menunjukkan ketersediaan data.
Menetapkan Pengekodan:
Data biasanya objek Buffer
. Untuk rentetan, gunakan Readable.setEncoding()
:
const fs = require('fs'); const readableStream = fs.createReadStream('file.txt'); let data = ''; let chunk; readableStream.on('readable', () => { while ((chunk = readableStream.read()) !== null) { data += chunk; } }); readableStream.on('end', () => { console.log(data); });
ini menafsirkan data sebagai UTF-8, menyampaikannya sebagai rentetan ke panggil balik.
Piping:
Piping memudahkan pemindahan data antara sumber dan destinasi:
const fs = require('fs'); const readableStream = fs.createReadStream('file.txt'); let data = ''; readableStream.setEncoding('utf8'); readableStream.on('data', (chunk) => { data += chunk; }); readableStream.on('end', () => { console.log(data); });
pipe()
Mengendalikan aliran data secara automatik.
Chaining:
aliran boleh dirantai:
const fs = require('fs'); const readableStream = fs.createReadStream('file1.txt'); const writableStream = fs.createWriteStream('file2.txt'); readableStream.pipe(writableStream);
Decompresses ini input.txt.gz
dan menulis hasilnya kepada output.txt
.
kaedah aliran boleh dibaca tambahan:
-
Readable.pause()
: Jeda aliran. -
Readable.resume()
: Sambungkan aliran yang dijeda. -
readable.unpipe()
: Mengeluarkan aliran destinasi dari paip.
Streams wrable:
Stream yang boleh ditulis menghantar data ke destinasi. Seperti aliran yang boleh dibaca, mereka EventEmitter
s.
Menulis ke sungai:
Gunakan write()
untuk menghantar data:
const fs = require('fs'); const zlib = require('zlib'); fs.createReadStream('input.txt.gz') .pipe(zlib.createGunzip()) .pipe(fs.createWriteStream('output.txt'));
write()
Mengembalikan kejayaan yang menunjukkan boolean. Jika palsu, aliran itu penuh sepenuhnya; Tunggu acara drain
sebelum menulis lebih lanjut.
Akhir data:
Panggil end()
untuk memberi isyarat kepada akhir data. Acara finish
dipancarkan selepas semua data dibuang. Anda tidak boleh menulis selepas memanggil end()
.
Peristiwa Stream yang penting:
-
error
: Menunjukkan ralat. -
pipe
: dipancarkan apabila aliran yang boleh dibaca disalurkan. -
unpipe
: dipancarkan apabilaunpipe()
dipanggil pada aliran yang boleh dibaca.
Kesimpulan:
aliran adalah ciri yang kuat dalam node.js, meningkatkan kecekapan I/O. Memahami aliran, paip, dan chaining membolehkan menulis kod yang bersih dan pelukis.
Node.js Streams FAQ:
-
Apakah aliran Node.js?
- Jenis utama aliran Node.js?
Gunakan dan melaksanakan kaedah - .
stream.Readable
_read
Kes penggunaan biasa untuk aliran yang boleh dibaca? -
Membuat aliran yang boleh ditulis?
dan melaksanakan kaedahGunakan . -
Kegunaan umum aliran yang boleh ditulis? Menyimpan data ke fail, menghantar data ke perkhidmatan.
-
aliran dupleks? menggabungkan fungsi yang boleh dibaca dan ditulis.
-
Transformasi Streams? Ubah suai data ketika ia melewati (mis., Mampatan, penyulitan).
-
data paip antara aliran? Gunakan kaedah
.pipe()
. -
Amalan terbaik untuk bekerja dengan aliran Node.js?
util.promisify
Atas ialah kandungan terperinci Asas -asas aliran node.js. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Alat AI Hot

Undress AI Tool
Gambar buka pakaian secara percuma

Undresser.AI Undress
Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover
Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Clothoff.io
Penyingkiran pakaian AI

Video Face Swap
Tukar muka dalam mana-mana video dengan mudah menggunakan alat tukar muka AI percuma kami!

Artikel Panas

Alat panas

Notepad++7.3.1
Editor kod yang mudah digunakan dan percuma

SublimeText3 versi Cina
Versi Cina, sangat mudah digunakan

Hantar Studio 13.0.1
Persekitaran pembangunan bersepadu PHP yang berkuasa

Dreamweaver CS6
Alat pembangunan web visual

SublimeText3 versi Mac
Perisian penyuntingan kod peringkat Tuhan (SublimeText3)

Topik panas

Java dan JavaScript adalah bahasa pengaturcaraan yang berbeza, masing -masing sesuai untuk senario aplikasi yang berbeza. Java digunakan untuk pembangunan aplikasi perusahaan dan mudah alih yang besar, sementara JavaScript digunakan terutamanya untuk pembangunan laman web.

JavaScriptcommentsareessentialformaintaining,reading,andguidingcodeexecution.1)Single-linecommentsareusedforquickexplanations.2)Multi-linecommentsexplaincomplexlogicorprovidedetaileddocumentation.3)Inlinecommentsclarifyspecificpartsofcode.Bestpractic

Titik berikut harus diperhatikan apabila tarikh pemprosesan dan masa di JavaScript: 1. Terdapat banyak cara untuk membuat objek tarikh. Adalah disyorkan untuk menggunakan rentetan format ISO untuk memastikan keserasian; 2. Dapatkan dan tetapkan maklumat masa boleh diperoleh dan tetapkan kaedah, dan ambil perhatian bahawa bulan bermula dari 0; 3. Tarikh pemformatan secara manual memerlukan rentetan, dan perpustakaan pihak ketiga juga boleh digunakan; 4. Adalah disyorkan untuk menggunakan perpustakaan yang menyokong zon masa, seperti Luxon. Menguasai perkara -perkara utama ini secara berkesan dapat mengelakkan kesilapan yang sama.

PlacingtagsatthebottomofablogpostorwebpageservespracticalpurposesforSEO,userexperience,anddesign.1.IthelpswithSEObyallowingsearchenginestoaccesskeyword-relevanttagswithoutclutteringthemaincontent.2.Itimprovesuserexperiencebykeepingthefocusonthearticl

JavaScriptispreferredforwebdevelopment, whersjavaisbetterforlarge-scalebackendsystemsandandroidapps.1) javascriptexcelsinceleatinginteractiveWebexperienceswithitsdynamicnatureanddommanipulation.2) javaoffersstrongyblectionandobjection

JavascripthassevenfundamentalDatypes: nombor, rentetan, boolean, undefined, null, objek, andsymbol.1) numberuseadouble-precisionformat, bergunaforwidevaluangesbutbecautiouswithfloating-pointarithmetic.2)

Penangkapan dan gelembung acara adalah dua peringkat penyebaran acara di Dom. Tangkap adalah dari lapisan atas ke elemen sasaran, dan gelembung adalah dari elemen sasaran ke lapisan atas. 1. Penangkapan acara dilaksanakan dengan menetapkan parameter useCapture addeventlistener kepada benar; 2. Bubble acara adalah tingkah laku lalai, useCapture ditetapkan kepada palsu atau ditinggalkan; 3. Penyebaran acara boleh digunakan untuk mencegah penyebaran acara; 4. Acara menggelegak menyokong delegasi acara untuk meningkatkan kecekapan pemprosesan kandungan dinamik; 5. Penangkapan boleh digunakan untuk memintas peristiwa terlebih dahulu, seperti pemprosesan pembalakan atau ralat. Memahami kedua -dua fasa ini membantu mengawal masa dan bagaimana JavaScript bertindak balas terhadap operasi pengguna.

Java dan JavaScript adalah bahasa pengaturcaraan yang berbeza. 1.Java adalah bahasa yang ditaip dan disusun secara statik, sesuai untuk aplikasi perusahaan dan sistem besar. 2. JavaScript adalah jenis dinamik dan bahasa yang ditafsirkan, terutamanya digunakan untuk interaksi web dan pembangunan front-end.
