Modul penimbal
js pada asalnya direka untuk penyemak imbas, jadi ia boleh mengendalikan rentetan yang dikodkan unikod dengan baik, tetapi ia tidak dapat mengendalikan data binari dengan baik. Ini adalah masalah dengan Node.js kerana Node.js direka untuk menghantar dan menerima data melalui rangkaian, selalunya dalam format binari. Contohnya:
- Hantar dan terima data melalui sambungan TCP;
- Baca data binari daripada imej atau fail dimampatkan;
- Baca dan tulis data daripada sistem fail
- Proses strim data binari daripada rangkaian
Modul Penampan membawa kaedah menyimpan data mentah ke Node.js, jadi data binari boleh digunakan dalam konteks js. Setiap kali anda perlu mengendalikan data yang dialihkan dalam operasi I/O dalam Node.js, adalah mungkin untuk menggunakan modul Penampan.
Kelas Penampan ialah jenis pembolehubah global yang digunakan untuk memproses data binari secara terus. Ia boleh dibina dalam pelbagai cara.
Data asal disimpan dalam contoh kelas Penampan. Contoh Penampan adalah serupa dengan tatasusunan integer
1.Penimbal(saiz) baharu: Peruntukkan penimbal baharu yang bersaiz 8-bit bait
2.new Buffer(array): Peruntukkan penimbal baharu menggunakan tatasusunan bait 8-bit
3.Penimbal baharu(str, [pengekodan]):pengekodan Jenis rentetan - kaedah pengekodan yang hendak digunakan, parameternya adalah pilihan.
4. Kaedah kelas: Buffer.isEncoding(encoding): Jika pengekodan yang diberikan adalah sah, kembalikan benar, jika tidak, kembalikan palsu.
6. Kaedah kelas: Buffer.concat(senarai, [totalLength]): senarai {Array} jenis tatasusunan, Tatasusunan Penampan, digunakan untuk disambungkan. totalLength {Number} type Jumlah saiz semua Penampan dalam tatasusunan Penampan di atas.
Selain membaca fail untuk mendapatkan contoh Penampan, ia juga boleh dibina secara langsung, contohnya:
Node.js menyediakan kaedah untuk menyalin keseluruhan kandungan objek Buffer ke objek Buffer yang lain. Kami hanya boleh menyalin antara objek Penampan sedia ada, jadi ia mesti dibuat.
Modul strim
Dalam sistem pengendalian jenis UNIX, strim ialah konsep standard. Terdapat tiga aliran utama seperti berikut:
1.Input standard
2. Output standard
3. Ralat piawai
Strim boleh dibaca
Jika penimbal ialah cara Node.js mengendalikan data mentah, maka strim biasanya ialah cara Node.js mengalihkan data. Strim dalam Node.js sama ada boleh dibaca atau ditulis. Banyak modul dalam Node.js menggunakan strim, termasuk HTTP dan sistem fail.
Andaikan kami mencipta fail classesmates.txt dan membaca senarai nama daripadanya untuk menggunakan data ini. Memandangkan data ialah strim, ini bermakna anda boleh bertindak pada data bermula dari beberapa bait pertama sebelum anda selesai membaca fail Ini adalah corak biasa dalam Node.js:
Dalam contoh di atas, data peristiwa dicetuskan apabila data baharu diterima. Acara tutup dicetuskan apabila pembacaan fail selesai.
Strim boleh tulis
Jelas sekali, kami juga boleh mencipta strim boleh tulis untuk menulis data. Ini bermakna dengan skrip ringkas, anda boleh menggunakan strim untuk membaca ke dalam fail dan kemudian menulis ke fail lain:
Apabila peristiwa data diterima, data kini ditulis ke strim boleh tulis.
readable.setEncoding(encoding): return: this
readable.resume(): Sama seperti di atas. Kaedah ini membenarkan strim yang boleh dibaca untuk terus menembak peristiwa data.
readable.pause(): Sama seperti di atas. Kaedah ini menyebabkan strim dalam mod aliran berhenti menembak peristiwa data, bertukar kepada mod tidak mengalir dan meninggalkan data yang tersedia seterusnya dalam penimbal dalaman.
Kelas: strim.Boleh Ditulis
Antara muka strim Boleh Tulis ialah abstraksi data yang anda tulis kepada sasaran.
1.writable.write(chunk, [encoding], [callback]):
ketulan {String |. Buffer} Data untuk ditulis
pengekodan {String} pengekodan, jika potongan ialah rentetan
panggil balik {Function} panggil balik selepas blok data ditulis
Pengembalian: {Boolean} benar jika data telah diproses sepenuhnya.
Kaedah ini menulis data ke sistem asas dan memanggil panggilan balik yang diberikan selepas data diproses.
2.writable.cork(): Paksa semua tulisan kekal.
Data yang disimpan akan ditulis apabila .uncork() atau .end() dipanggil.
3.writable.end([chunk], [encoding], [callback])
potongan {String |. Buffer} pilihan, data untuk ditulis
pengekodan {String} pengekodan, jika potongan ialah rentetan
panggilan balik {Fungsi} pilihan, panggil balik selepas strim tamat
Memanggil write() selepas memanggil end() akan menghasilkan ralat.