cari
Rumahhujung hadapan webtutorial jsAsas -asas aliran node.js
Asas -asas aliran node.jsFeb 20, 2025 am 10:07 AM

The Basics of Node.js Streams

node.js, yang tidak segerak dan didorong oleh peristiwa, cemerlang dalam operasi I/O terikat. Memanfaatkan aliran Node.js dengan ketara memudahkan tugas -tugas ini dengan memproses data dengan cekap dalam ketulan yang lebih kecil. Mari kita menyelidiki dunia aliran dan lihat bagaimana mereka menyelaraskan i/o.

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(), dan Readable.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

Anda mungkin menemui aliran di node.js sudah. Dalam pelayan HTTP, permintaan itu adalah aliran yang boleh dibaca, dan tindak balasnya adalah aliran yang boleh ditulis. Modul

menyediakan keupayaan aliran fail yang boleh dibaca dan ditulis. fs

Artikel ini memberi tumpuan kepada aliran yang boleh dibaca dan ditulis; aliran dupleks berada di luar skopnya.

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

acara

memberi isyarat akhir data. end

secara alternatif, berulang kali panggil

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 apabila unpipe() 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?

    Membuat aliran yang boleh dibaca? Gunakan
  • dan melaksanakan kaedah
  • .

    stream.Readable _read Kes penggunaan biasa untuk aliran yang boleh dibaca?

    Membaca fail besar, memproses data dari permintaan HTTP, pengendalian data masa nyata.
  • Membuat aliran yang boleh ditulis? Gunakan

    dan melaksanakan kaedah
  • .
  • 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!

Kenyataan
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn
Ganti aksara rentetan dalam javascriptGanti aksara rentetan dalam javascriptMar 11, 2025 am 12:07 AM

Penjelasan terperinci mengenai kaedah penggantian rentetan javascript dan Soalan Lazim Artikel ini akan meneroka dua cara untuk menggantikan watak rentetan dalam JavaScript: Kod JavaScript dalaman dan HTML dalaman untuk laman web. Ganti rentetan di dalam kod JavaScript Cara yang paling langsung ialah menggunakan kaedah pengganti (): str = str.replace ("cari", "ganti"); Kaedah ini hanya menggantikan perlawanan pertama. Untuk menggantikan semua perlawanan, gunakan ungkapan biasa dan tambahkan bendera global g: str = str.replace (/fi

Bina Aplikasi Web Ajax anda sendiriBina Aplikasi Web Ajax anda sendiriMar 09, 2025 am 12:11 AM

Jadi di sini anda, bersedia untuk mempelajari semua perkara ini yang dipanggil Ajax. Tetapi, apa sebenarnya? Istilah Ajax merujuk kepada kumpulan teknologi longgar yang digunakan untuk membuat kandungan web yang dinamik dan interaktif. Istilah Ajax, yang asalnya dicipta oleh Jesse J

Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri?Bagaimana saya membuat dan menerbitkan perpustakaan JavaScript saya sendiri?Mar 18, 2025 pm 03:12 PM

Artikel membincangkan membuat, menerbitkan, dan mengekalkan perpustakaan JavaScript, memberi tumpuan kepada perancangan, pembangunan, ujian, dokumentasi, dan strategi promosi.

Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas?Bagaimanakah saya mengoptimumkan kod JavaScript untuk prestasi dalam penyemak imbas?Mar 18, 2025 pm 03:14 PM

Artikel ini membincangkan strategi untuk mengoptimumkan prestasi JavaScript dalam pelayar, memberi tumpuan kepada mengurangkan masa pelaksanaan dan meminimumkan kesan pada kelajuan beban halaman.

Bagaimanakah saya boleh debug kod javascript dengan berkesan menggunakan alat pemaju pelayar?Bagaimanakah saya boleh debug kod javascript dengan berkesan menggunakan alat pemaju pelayar?Mar 18, 2025 pm 03:16 PM

Artikel ini membincangkan debugging JavaScript yang berkesan menggunakan alat pemaju pelayar, memberi tumpuan kepada menetapkan titik putus, menggunakan konsol, dan menganalisis prestasi.

Cara Membina Slider JQuery MudahCara Membina Slider JQuery MudahMar 11, 2025 am 12:19 AM

Artikel ini akan membimbing anda untuk membuat karusel gambar mudah menggunakan perpustakaan jQuery. Kami akan menggunakan perpustakaan BXSlider, yang dibina di atas jQuery dan menyediakan banyak pilihan konfigurasi untuk menubuhkan karusel. Pada masa kini, Gambar Carousel telah menjadi ciri yang mesti ada di laman web - satu gambar lebih baik daripada seribu perkataan! Selepas membuat keputusan untuk menggunakan karusel gambar, soalan seterusnya adalah bagaimana untuk menciptanya. Pertama, anda perlu mengumpul gambar-gambar resolusi tinggi yang berkualiti tinggi. Seterusnya, anda perlu membuat karusel gambar menggunakan HTML dan beberapa kod JavaScript. Terdapat banyak perpustakaan di web yang dapat membantu anda membuat karusel dengan cara yang berbeza. Kami akan menggunakan Perpustakaan BXSlider Sumber Terbuka. Perpustakaan BXSlider menyokong reka bentuk responsif, jadi karusel yang dibina dengan perpustakaan ini dapat disesuaikan dengan mana -mana

kesan matriks jQuerykesan matriks jQueryMar 10, 2025 am 12:52 AM

Bawa kesan filem matriks ke halaman anda! Ini adalah plugin jQuery yang sejuk berdasarkan filem terkenal "The Matrix". Plugin mensimulasikan kesan aksara hijau klasik dalam filem, dan hanya pilih gambar dan plugin akan mengubahnya menjadi gambar gaya matriks yang diisi dengan aksara angka. Datang dan cuba, sangat menarik! Bagaimana ia berfungsi Plugin memuat imej ke kanvas dan membaca nilai piksel dan warna: data = ctx.getimagedata (x, y, settings.grainsize, settings.grainsize) .data Plugin dengan bijak membaca kawasan segi empat tepat gambar dan menggunakan jQuery untuk mengira warna purata setiap kawasan. Kemudian, gunakan

Bagaimanakah saya menggunakan peta sumber untuk debug kod JavaScript minified?Bagaimanakah saya menggunakan peta sumber untuk debug kod JavaScript minified?Mar 18, 2025 pm 03:17 PM

Artikel ini menerangkan cara menggunakan peta sumber untuk debug JavaScript minifikasi dengan memetakannya kembali ke kod asal. Ia membincangkan membolehkan peta sumber, menetapkan titik putus, dan menggunakan alat seperti Chrome Devtools dan Webpack.

See all articles

Alat AI Hot

Undresser.AI Undress

Undresser.AI Undress

Apl berkuasa AI untuk mencipta foto bogel yang realistik

AI Clothes Remover

AI Clothes Remover

Alat AI dalam talian untuk mengeluarkan pakaian daripada foto.

Undress AI Tool

Undress AI Tool

Gambar buka pakaian secara percuma

Clothoff.io

Clothoff.io

Penyingkiran pakaian AI

AI Hentai Generator

AI Hentai Generator

Menjana ai hentai secara percuma.

Artikel Panas

R.E.P.O. Kristal tenaga dijelaskan dan apa yang mereka lakukan (kristal kuning)
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Tetapan grafik terbaik
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌
R.E.P.O. Cara Memperbaiki Audio Jika anda tidak dapat mendengar sesiapa
3 minggu yang laluBy尊渡假赌尊渡假赌尊渡假赌

Alat panas

Muat turun versi mac editor Atom

Muat turun versi mac editor Atom

Editor sumber terbuka yang paling popular

Dreamweaver CS6

Dreamweaver CS6

Alat pembangunan web visual

Dreamweaver Mac版

Dreamweaver Mac版

Alat pembangunan web visual

Notepad++7.3.1

Notepad++7.3.1

Editor kod yang mudah digunakan dan percuma

MinGW - GNU Minimalis untuk Windows

MinGW - GNU Minimalis untuk Windows

Projek ini dalam proses untuk dipindahkan ke osdn.net/projects/mingw, anda boleh terus mengikuti kami di sana. MinGW: Port Windows asli bagi GNU Compiler Collection (GCC), perpustakaan import yang boleh diedarkan secara bebas dan fail pengepala untuk membina aplikasi Windows asli termasuk sambungan kepada masa jalan MSVC untuk menyokong fungsi C99. Semua perisian MinGW boleh dijalankan pada platform Windows 64-bit.