Belajar Node js

Tutorial Streams Node js: Filestream, Pipes

Dalam tutorial ini Anda akan mempelajari:

Filestream dalam Node.js

Node memanfaatkan stream secara ekstensif sebagai mekanisme transfer data.

Misalnya, saat Anda menghasilkan output apa pun ke konsol dengan menggunakan fungsi console.log, sebenarnya Anda menggunakan stream untuk mengirim data ke konsol.

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

Langkah 1) Buatlah sebuah file dengan nama data.txt yang memiliki data di bawah ini. Anggaplah file ini disimpan pada drive D mesin lokal kita.

Tutorial on Node.js (Tutorial pada Node.js)

Introduction (Pengenalan)

Events

Generators

Data Connectivity (Konektivitas Data)

Using Jasmine (Menggunakan Jasmine)

Langkah 2) Tulislah kode terkait yang akan memakai stream 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 memasukkan modul ‘fs’ yang berisi semua kegunaan fungsi yang dibutuhkan untuk membuat stream.
  2. Selanjutnya kita membuat stream yang dapat dibaca dengan menggunakan metode – createReadStream.Kita memberikan lokasi file data.txt kita sebagai masukan.
  3. Fungsi steam.on merupakan handler event. Di dalamnya, kita menyebut parameter pertama sebagai ‘data’. Artinya, setiap kali data dari file masuk ke dalam stream, then mengeksekusi fungsi callback. Dalam kasus kita, kita menetapkan sebuah fungsi callback yang akan melakukan 2 langkah dasar. Pertama, mengubah data yang dibaca dari file sebagai sebuah string. Kedua, mengirim string yang diubah menjadi output ke konsol.
  4. Kita mengambil setiap chunk (potongan) data yang dibaca dari stream data dan mengubahnya menjadi string.
  5. Terakhir, kita mengirimkan output dari setiap string yang dikonversi menjadi chunk ke konsol.

Output:

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

Menulis ke file

Dengan cara yang sama seperti membuat stream read, kita juga dapat membuat stream write untuk menuliskan data ke file. Pertama, mari kita membuat file kosong yang dinamai data.txt. Anggap saja file ini disimpan pada drive D komputer Anda.

Kode di bawah menunjukkan bagaimana cara 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. Kita sedang membuat stream yang dapat ditulis dengan menggunakan metode – createWriteStream. Kita memberikan lokasi dari file data.txt sebagai masukan.
  2. Selanjutnya, kita menggunakan metode stream.write untuk menulis baris teks yang berbeda ke file text kita.Stream akan menangani penulisan data ini ke file data.txt.

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

Tutorial on Node.js

Introduction

Events

Generators

Data Connectivity

Using Jasmine

Pipe dalam Node.js

Di dalam aplikasi Node, stream dapat disalurkan bersama dengan menggunakan metode pipe() yang membutuhkan dua argumen:

  • Stream wajib yang dapat ditulis, yang berperan sebagai destinasi data dan
  • Objek opsional yang digunakan untuk meneruskan opsi.

Contoh umum dari penggunaan pipe bisa dilihat ketika Anda ingin mentransfer data dari satu file ke file lainnya.

Mari kita lihat contoh bagaimana cara kita dapat mentransfer data dari satu file ke file lain menggunakan pipe.

Langkah 1) Buatlah file dengan nama datainput.txt yang memiliki data di bawah ini. Anggaplah file ini disimpan pada drive D mesin lokal kita.

Tutorial on Node.js

Introduction

Events

Generators

Data Connectivity

Using Jasmine

Langkah 2) Buatlah sebuah file kosong yang disebut dataOutput.txt dan simpan pada drive D drive mesin lokal Anda.

Langkah 3) Tuliskan kode di bawah ini untuk menjalankan pemindahan 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. Pertama, kita membuat “readstream” untuk file datainput.txt kita yang berisi seluruh data yang perlu ditransfer ke file baru.
  2. Kemudian kita perlu membuat “writestream” untuk file dataOutput.txt, yaitu file kosong kita dan file destinasi pemindahan data dari file datainput.txt.
  3. Kemudian kita menggunakan perintah pipe untuk mentransfer data dari readstream ke writestream.Perintah pipe akan mengambil semua data yang masuk ke readstream lalu menyebarkannya ke writestream.

Jika sekarang Anda buka file dataOutput.txt, Anda akan melihat semua data yang ada pada file datainput.txt.

Event dalam Node.js

Event adalah salah satu konsep utama dalam Node.js. Terkadang Node.js disebut sebagai framework Event-driven.

Pada dasarnya, event adalah apa hal yang terjadi. Misalnya, jika sebuah koneksi ke database dibuat, maka event database connection dipicu. Pemrograman event-driven berfungsi untuk membuat fungsi yang akan terpicu ketika event tertentu dipicu.

Mari kita lihat contoh dasar menetapkan suatu event di Node.js.

Kita akan membuat event yang disebut ‘data_received’. Ketika event ini dipicu, teks “data received” (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 require untuk memasukkan modul ‘events’.Dengan modul ini, Anda dapat membuat event di Node.js.
  2. Buat emitor/pemancar event yang baru.Emitor ini digunakan untuk mengikat event, dalam kasus kita yaitu event “data_received”, ke fungsi callback yang ditetapkan pada langkah ke-3.
  3. Kita menetapkan fungsi event-driven yang mengatakan bahwa jika seandainya event “data_received” dipicu, maka kita harus menampilkan teks “data_received” pada konsol.
  4. Terakhir, kita memiliki pemicu manual untuk event kita yaitu dengan menggunakan fungsi eventEmiter.emit.Fungsi ini akan memicu event data_received.

Ketika program dijalankan, teks “data received” akan dikirim ke konsol seperti yang ditunjukkan di bawah ini.

Belajar node js

Menghasilkan Event

Ada berbagai metode yang dapat dipanggil saat menetapkan event. Topik ini fokus melihat masing-masing metode secara rinci.

  1. One time event handlers (Handler event kali pertama)

Terkadang Anda tertarik untuk bereaksi terhadap suatu event hanya pada saat event itu terjadi pertama kali. Dalam situasi ini, Anda dapat menggunakan metode once().

Mari kita lihat bagaimana cara penggunaan metode once untuk handler event.

Penjelasan Kode:-

  1. Di sini kita menggunakan metode ‘once’ untuk mengatakan bahwa fungsi callback hanya boleh dijalankan satu kali untuk event ‘data_received,’.
  2. Di sini kita memicu event ‘data_received’ secara manual.
  3. Ketika event ‘data_received’ dipicu lagi, tidak terjadi apa pun. Hal ini terjadi karena pada langkah pertama, kita mengatakan bahwa event tersebut hanya dapat dipicu satu kali.

Jika kode dieksekusi dengan benar, output dalam log akan menjadi ‘data_received successfully’ (data_sukses diterima). Pesan ini hanya akan muncul satu kali pada konsol.

  1. Inspecting Event Listeners (Memeriksa Listener Event)

Sewaktu-waktu, emitor event bisa memiliki 0 atau lebih listener yang terpasang padanya. Listener untuk setiap jenis event dapat diperiksa menggunakan beberapa cara.

Jika Anda tertarik menentukan jumlah listener yang terpasang saja, maka gunakan saja metode EventEmitter.listenerCount ().

(Catatan: Listener dianggap penting karena program utama harus mengetahui jika listener ditambahkan ke sebuah event saat menjalankan program. Jika tidak, program tersebut akan mengalami kegagalan fungsi karena listener tambahan akan dipanggil.)

Penjelasan Kode:-

  1. Kita menetapkan jenis eventEmitter yang diperlukan untuk menggunakan metode yang berkaitan dengan event.
  2. Kemudian kita menetapkan objek yang disebut emitter (emitor), yang akan digunakan untuk menetapkan handler event kita.
  3. Kita membuat 2 handler event yang pada dasarnya tidak melakukan apa pun. Handler dibuat sederhana pada contoh untuk menunjukkan cara kerja metode listenerCount saja.
  4. Sekarang, ketika Anda memanggil metode listenerCount pada event data_received kita, metode tersebut akan mengirimkan jumlah listener event yang terpasang pada event ini di log konsol.

Jika kode dieksekusi dengan benar, value: 2 akan ditampilkan pada log konsol.

  1. Event newListener

Emitor event menghasilkan event newListener setiap kali handler event baru didaftarkan. Event ini digunakan untuk mendeteksi handler event baru. Anda biasanya menggunakan event newListener ketika Anda perlu mengalokasikan sumber daya atau melakukan beberapa tindakan untuk setiap handler event 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. Kita membuat handler event baru untuk event ‘newListener’. Jadi ketika sebuah handler event baru didaftarkan, teks “Added listener for” + nama event tersebut akan ditampilkan pada konsol.
  2. Di sini kita menuliskan teks “Added listener for” + nama event untuk setiap event yang didaftarkan pada konsol.
  3. Kita menetapkan 2 handler event untuk event ‘data_received’ kita.

Jika kode di atas dijalankan dengan benar, teks di bawah ini akan ditampilkan pada konsol. Teks tersebut hanya menunjukkan bahwa event handler ‘newListener’ dipicu dua kali.

Added listener for data_received events

Added listener for data_received events

Ringkasan

  • Stream digunakan dalam Node.js untuk membaca dan menulis data dari perangkat Input-Output. Node.js memanfaatkan library ‘fs’ untuk membuat stream yang dapat dibaca dan ditulis ke file. Stream ini dapat digunakan untuk membaca dan menulis data dari file.
  • Pipe dapat digunakan untuk menghubungkan beberapa stream secara bersamaan. Salah satu contoh yang paling umum adalah menyalurkan stream read dan stream write bersama-sama untuk memindahkan data dari satu file ke file lainnya.
  • Node.js sering juga dilabeli sebagai framework event driven dan dianggap sebagai perangkat yang penggunaannya sangat mudah untuk menetapkan event.
  • Event juga memaparkan metode untuk menanggapi event kunci. Contohnya, kita telah melihat handler event once() yang dapat digunakan untuk memastikan bahwa fungsi callback hanya dijalankan satu kali ketika sebuah event dipicu.

Leave a Reply

Your email address will not be published. Required fields are marked *