Tutorial Aliran Node js: Filestream, Pipes

Daftar Isi:

Anonim

Dalam tutorial ini, Anda akan belajar

  • Filestream di Node.js
  • Pipa di Node.js
  • Acara di Node.js
  • Peristiwa Pemancar

Filestream di Node.js

Node memanfaatkan aliran secara ekstensif sebagai mekanisme transfer data.

Misalnya, saat Anda mengeluarkan apa pun ke konsol menggunakan fungsi console.log, Anda sebenarnya menggunakan aliran untuk mengirim data ke konsol.

Node.js juga memiliki kemampuan untuk mengalirkan data dari file sehingga dapat dibaca dan ditulis dengan tepat. Sekarang kita akan melihat contoh bagaimana kita dapat menggunakan stream untuk membaca dan menulis dari file. Kami perlu mengikuti langkah-langkah yang disebutkan di bawah untuk contoh ini

Langkah 1) Buat file bernama data.txt yang memiliki data di bawah ini. Anggaplah file ini disimpan di drive D mesin lokal kita.

Tutorial di Node.js

pengantar

Acara

Generator

Konektivitas Data

Menggunakan Jasmine

Langkah 2) Tulis kode yang relevan yang akan menggunakan aliran untuk membaca data dari file.

var fs = require("fs");var stream;stream = fs.createReadStream("D://data.txt");stream.on("data", function(data) {var chunk = data.toString();console.log(chunk);});

Penjelasan Kode: -

  1. Pertama-tama kita perlu menyertakan modul 'fs' yang berisi semua fungsionalitas yang diperlukan untuk membuat aliran.
  2. Selanjutnya kita membuat aliran yang dapat dibaca dengan menggunakan metode - createReadStream. Sebagai masukan, kami memberikan lokasi file data.txt kami.
  3. Fungsi steam.on adalah pengendali kejadian dan di dalamnya, kami menetapkan parameter pertama sebagai 'data.' Ini berarti bahwa setiap kali data masuk dalam aliran dari file, jalankan fungsi panggilan balik. Dalam kasus kami, kami mendefinisikan fungsi panggilan balik yang akan melakukan 2 langkah dasar. Yang pertama adalah mengubah data yang dibaca dari file sebagai string. Yang kedua adalah mengirim string yang diubah sebagai output ke konsol.
  4. Kami mengambil setiap potongan data yang dibaca dari aliran data dan mengubahnya menjadi string.
  5. Akhirnya, kami mengirimkan output dari setiap potongan string yang dikonversi ke konsol.

Keluaran:

  • Jika kode dijalankan dengan benar, Anda akan melihat output di atas di konsol. Output ini akan sama dengan yang ada di file data.txt.

Menulis ke file

Dengan cara yang sama, kita membuat aliran baca, kita juga dapat membuat aliran tulis untuk menulis data ke file. Mari pertama-tama buat file kosong tanpa konten yang disebut data.txt. Mari kita asumsikan file ini ditempatkan di drive D komputer kita.

Kode di bawah ini menunjukkan bagaimana kita dapat menulis data ke file.

var fs = require("fs");var stream;stream = fs.createWriteStream("D://data.txt");stream.write("Tutorial on Node.js")stream.write("Introduction")stream.write("Events")stream.write("Generators")stream.write("Data Connectivity")stream.write("Using Jasmine")

Penjelasan Kode: -

  1. Kami membuat aliran yang dapat ditulis dengan menggunakan metode - createWriteStream. Sebagai masukan, kami memberikan lokasi file data.txt kami.
  2. Selanjutnya kami menggunakan metode stream.write untuk menulis baris teks yang berbeda ke file teks kami. Aliran akan menangani penulisan data ini ke file data.txt.

Jika Anda membuka file data.txt, Anda sekarang akan melihat data berikut di file

Tutorial di Node.js

pengantar

Acara

Generator

Konektivitas Data

Menggunakan Jasmine

Pipa di Node.js

Dalam aplikasi Node, aliran dapat disatukan menggunakan metode pipe (), yang membutuhkan dua argumen:

  • Aliran Wajib yang dapat ditulis yang bertindak sebagai tujuan untuk data dan
  • Objek opsional yang digunakan untuk meneruskan opsi.

Contoh umum penggunaan pipa, jika Anda ingin mentransfer data dari satu file ke file lainnya.

Jadi mari kita lihat contoh bagaimana kita dapat mentransfer data dari satu file ke file lainnya menggunakan pipa.

Langkah 1) Buat file bernama datainput.txt yang memiliki data di bawah ini. Anggaplah file ini disimpan di drive D mesin lokal kita.

Tutorial di Node.js

pengantar

Acara

Generator

Konektivitas Data

Menggunakan Jasmine

Langkah 2) Buat file kosong kosong bernama dataOutput.txt dan letakkan di drive D mesin lokal Anda.

Langkah 3) Tulis kode di bawah ini untuk melakukan transfer data dari file datainput.txt ke file dataOutput.txt.

var fs = require("fs");var readStream = fs.createReadStream("D://datainput.txt");var writeStream = fs.createWriteStream("D://dataOutput.txt");readStream.pipe(writeStream);

Penjelasan Kode: -

  1. Kami pertama kali membuat "readstream" ke file datainput.txt kami yang berisi semua data kami yang perlu ditransfer ke file baru.
  2. Kemudian kita perlu membuat "writestream" ke file dataOutput.txt kita, yang merupakan file kosong kita dan merupakan tujuan transfer data dari file datainput.txt.
  3. Kami kemudian menggunakan perintah pipa untuk mentransfer data dari readstream ke aliran tulis. Perintah pipa akan mengambil semua data yang masuk ke aliran baca, dan mendorongnya ke aliran tulis.

Jika sekarang Anda membuka file dataOutput.txt, Anda akan melihat semua data yang ada di file datainput.txt.

Acara di Node.js

Peristiwa adalah salah satu konsep utama di Node.js dan terkadang Node.js disebut sebagai kerangka kerja yang digerakkan oleh Peristiwa.

Pada dasarnya suatu peristiwa adalah sesuatu yang terjadi. Misalnya, jika koneksi dibuat ke database, maka kejadian koneksi database dipicu. Pemrograman yang digerakkan oleh peristiwa adalah untuk membuat fungsi yang akan dipicu saat peristiwa tertentu dipicu.

Mari kita lihat contoh dasar untuk mendefinisikan sebuah event di Node.js.

Kami akan membuat acara yang disebut 'data_received'. Saat peristiwa ini dipicu, teks "data diterima" akan dikirim ke konsol.

var events = require('events');var eventEmitter = new events.EventEmitter();eventEmitter.on('data_received', function() {console.log('data received succesfully.');});eventEmitter.emit('data_received');

Penjelasan Kode: -

  1. Gunakan fungsi yang dibutuhkan untuk memasukkan modul 'peristiwa'. Dengan modul ini, Anda akan dapat membuat acara di Node.js.
  2. Buat pemancar acara baru. Ini digunakan untuk mengikat acara, yang dalam kasus kami adalah "data_received" ke fungsi panggilan balik yang didefinisikan di langkah3.
  3. Kita mendefinisikan fungsi yang digerakkan oleh peristiwa yang mengatakan bahwa jika dalam kasus peristiwa "data_received" dipicu maka kita harus mengeluarkan teks "data_received" ke konsol.
  4. Akhirnya, kami memiliki pemicu manual acara kami menggunakan fungsi eventEmiter.emit. Ini akan memicu acara data_received.

Saat program dijalankan, teks "data diterima" akan dikirim ke konsol seperti yang ditunjukkan di bawah ini.

Peristiwa Pemancar

Saat menentukan kejadian, ada metode berbeda untuk kejadian yang bisa dipanggil. Topik ini berfokus pada melihat masing-masing secara mendetail.

  1. Penangan acara satu kali

Terkadang Anda mungkin tertarik untuk bereaksi terhadap suatu peristiwa hanya saat pertama kali terjadi. Dalam situasi ini, Anda bisa menggunakan metode once ().

Mari kita lihat bagaimana kita bisa menggunakan metode Once untuk event handler.

Penjelasan Kode: -

  1. Di sini kita menggunakan metode 'Once' untuk mengatakan bahwa untuk event 'data_received,' fungsi callback hanya boleh dijalankan satu kali.
  2. Di sini kami memicu peristiwa 'data_received' secara manual.
  3. Saat peristiwa 'data_received' dipicu lagi, kali ini, tidak akan terjadi apa-apa. Ini karena langkah pertama kami mengatakan bahwa acara hanya dapat dipicu sekali.

Jika kode dijalankan dengan benar, output di log akan 'berhasil diterima data_received'. Pesan ini hanya akan muncul sekali di konsol.

  1. Memeriksa Pendengar Acara

Pada titik mana pun dalam masa pakainya, pemancar acara dapat memiliki nol atau lebih pendengar yang menyertainya. Pendengar untuk setiap jenis acara dapat diperiksa dengan beberapa cara.

Jika Anda hanya tertarik untuk menentukan jumlah pendengar terlampir, maka tidak perlu mencari lagi selain metode EventEmitter.listenerCount ().

( Catatan: Pendengar penting karena program utama harus tahu jika pendengar ditambahkan dengan cepat ke suatu acara, jika tidak program akan gagal berfungsi karena pendengar tambahan akan dipanggil.)

Penjelasan Kode: -

  1. Kami mendefinisikan jenis eventEmitter yang diperlukan untuk menggunakan metode terkait acara.
  2. Kami kemudian mendefinisikan sebuah objek yang disebut emitter yang akan digunakan untuk mendefinisikan penangan kejadian kami.
  3. Kami membuat 2 penangan acara yang pada dasarnya tidak melakukan apa-apa. Ini dibuat sederhana untuk contoh kita hanya untuk menunjukkan cara kerja metode listenerCount.
  4. Sekarang, saat Anda menjalankan metode listenerCount pada peristiwa data_received kami, ini akan mengirimkan jumlah pendengar peristiwa yang dilampirkan ke peristiwa ini di log konsol.

Jika kode dijalankan dengan benar, nilai 2 akan ditampilkan di log konsol.

  1. Acara newListener

Setiap kali pengendali kejadian baru didaftarkan, emitor acara mengeluarkan acara newListener. Peristiwa ini digunakan untuk mendeteksi penangan peristiwa baru. Anda biasanya menggunakan peristiwa newListener saat Anda perlu mengalokasikan sumber daya atau melakukan beberapa tindakan untuk setiap pengendali peristiwa baru.

var events = require('events');var eventEmitter = events.EventEmitter;var emitter = new eventEmitter();emitter.on("newListener", function(eventName, listener) {console.log("Added listener for " + eventName + " events");});emitter.on('data_received', function() {});emitter.on('data_received', function() {});

Penjelasan Kode: -

  1. Kami membuat penangan acara baru untuk acara 'newListener'. Jadi, setiap kali pengendali peristiwa baru didaftarkan, teks "Pendengar yang ditambahkan untuk" + nama peristiwa akan ditampilkan di konsol.
  2. Di sini kita menulis ke konsol teks "Pendengar yang ditambahkan untuk" + nama acara untuk setiap acara yang terdaftar.
  3. Kami mendefinisikan 2 penangan acara untuk acara kami 'data_received'.

Jika kode di atas dijalankan dengan benar, teks di bawah ini akan ditampilkan di konsol. Ini hanya menunjukkan bahwa event handler 'newListener' dipicu dua kali.

Menambahkan pendengar untuk acara data_received

Menambahkan pendengar untuk acara data_received

Ringkasan

  • Stream digunakan di Node.js untuk membaca dan menulis data dari perangkat Input-Output. Node.js memanfaatkan pustaka 'fs' untuk membuat aliran yang dapat dibaca dan ditulis ke file. Aliran ini dapat digunakan untuk membaca dan menulis data dari file.
  • Pipa dapat digunakan untuk menghubungkan beberapa aliran bersama. Salah satu contoh paling umum adalah menyatukan aliran baca dan tulis untuk mentransfer data dari satu file ke file lainnya.
  • Node.js sering juga diberi tag sebagai kerangka kerja yang digerakkan oleh peristiwa, dan sangat mudah untuk menentukan kejadian di Node.js. Fungsi dapat didefinisikan yang menanggapi peristiwa ini.
  • Peristiwa juga memaparkan metode untuk menanggapi peristiwa utama. Misalnya, kita telah melihat penangan kejadian once () yang bisa digunakan untuk memastikan bahwa fungsi panggilan balik hanya dijalankan sekali ketika sebuah kejadian dipicu.