Dalam tutorial ini, anda akan belajar
- Filem dalam Node.js
- Paip di Node.js
- Acara di Node.js
- Memancarkan Acara
Filem dalam Node.js
Node menggunakan aliran secara meluas sebagai mekanisme pemindahan data.
Contohnya, apabila anda mengeluarkan sesuatu ke konsol menggunakan fungsi console.log, anda sebenarnya menggunakan aliran untuk menghantar data ke konsol.
Node.js juga mempunyai kemampuan untuk mengalirkan data dari fail sehingga dapat dibaca dan ditulis dengan tepat. Kita sekarang akan melihat contoh bagaimana kita boleh menggunakan aliran untuk membaca dan menulis dari fail. Kita perlu mengikuti langkah-langkah yang disebut di bawah untuk contoh ini
Langkah 1) Buat fail bernama data.txt yang mempunyai data di bawah. Anggaplah fail ini disimpan di pemacu D mesin tempatan kita.
Tutorial di Node.js
Pengenalan
Acara
Penjana
Kesambungan Data
Menggunakan Jasmine
Langkah 2) Tuliskan kod yang berkaitan yang akan menggunakan aliran untuk membaca data dari fail.
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 Kod: -
- Pertama, kita perlu memasukkan modul 'fs' yang mengandungi semua fungsi yang diperlukan untuk membuat aliran.
- Seterusnya kami membuat aliran yang dapat dibaca dengan menggunakan kaedah - createReadStream. Sebagai input, kami memberikan lokasi fail data.txt kami.
- Fungsi steam.on adalah pengendali peristiwa dan di dalamnya, kami menentukan parameter pertama sebagai 'data.' Ini bermaksud bahawa setiap kali data masuk dalam aliran dari file, maka jalankan fungsi panggilan balik. Dalam kes kami, kami menentukan fungsi panggilan balik yang akan melaksanakan 2 langkah asas. Yang pertama adalah menukar data yang dibaca dari fail sebagai rentetan. Yang kedua ialah menghantar rentetan yang ditukar sebagai output ke konsol.
- Kami mengambil setiap potongan data yang dibaca dari aliran data dan mengubahnya menjadi rentetan.
- Akhirnya, kami menghantar output setiap rentetan yang ditukarkan ke konsol.
Pengeluaran:
- Sekiranya kod dijalankan dengan betul, anda akan melihat output di atas di konsol. Keluaran ini akan sama seperti yang terdapat dalam fail data.txt.
Menulis ke fail
Dengan cara yang sama, bahawa kita membuat aliran baca, kita juga dapat membuat aliran tulis untuk menulis data ke file. Mari buat dahulu fail kosong tanpa isi yang disebut data.txt. Mari kita anggap fail ini diletakkan di pemacu D komputer kita.
Kod di bawah menunjukkan bagaimana kita dapat menulis data ke fail.
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 Kod: -
- Kami membuat aliran yang dapat ditulis dengan menggunakan kaedah - createWriteStream. Sebagai input, kami memberikan lokasi fail data.txt kami.
- Seterusnya kami menggunakan stream.write kaedah untuk menulis baris teks yang berbeza ke fail teks kami. Aliran akan mengurus menulis data ini ke fail data.txt.
Sekiranya anda membuka fail data.txt, anda sekarang akan melihat data berikut dalam fail tersebut
Tutorial di Node.js
Pengenalan
Acara
Penjana
Kesambungan Data
Menggunakan Jasmine
Paip di Node.js
Dalam aplikasi Node, aliran dapat disalurkan bersama menggunakan metode pipa (), yang memerlukan dua argumen:
- Aliran boleh tulis yang diperlukan yang berfungsi sebagai tujuan data dan
- Objek pilihan yang digunakan untuk meneruskan pilihan.
Contoh biasa menggunakan paip, jika anda ingin memindahkan data dari satu fail ke fail lain.
Oleh itu, mari kita lihat contoh bagaimana kita dapat memindahkan data dari satu fail ke fail lain menggunakan paip.
Langkah 1) Buat fail bernama datainput.txt yang mempunyai data di bawah. Anggaplah fail ini disimpan di pemacu D mesin tempatan kita.
Tutorial di Node.js
Pengenalan
Acara
Penjana
Kesambungan Data
Menggunakan Jasmine
Langkah 2) Buat fail kosong yang dipanggil dataOutput.txt dan letakkan di pemacu D mesin tempatan anda.
Langkah 3) Tuliskan kod di bawah ini untuk melakukan pemindahan data dari fail datainput.txt ke fail dataOutput.txt.
var fs = require("fs");var readStream = fs.createReadStream("D://datainput.txt");var writeStream = fs.createWriteStream("D://dataOutput.txt");readStream.pipe(writeStream);
Penjelasan Kod: -
- Kami pertama kali membuat "readstream" ke fail datainput.txt kami yang mengandungi semua data kami yang perlu dipindahkan ke fail baru.
- Kita kemudian perlu membuat "writestream" ke fail dataOutput.txt kami, yang merupakan fail kosong kami dan merupakan tujuan untuk pemindahan data dari fail datainput.txt.
- Kami kemudian menggunakan arahan paip untuk memindahkan data dari aliran baca ke aliran tulis. Perintah paip akan mengambil semua data yang masuk ke aliran baca, dan mendorongnya ke aliran semula.
Sekiranya anda sekarang membuka fail dataOutput.txt, anda akan melihat semua data yang terdapat dalam fail datainput.txt.
Acara di Node.js
Acara adalah salah satu konsep utama dalam Node.js dan kadang-kadang Node.js disebut sebagai kerangka berdasarkan Acara.
Pada dasarnya, peristiwa adalah sesuatu yang berlaku. Sebagai contoh, jika sambungan dibuat ke pangkalan data, maka peristiwa sambungan pangkalan data akan dipicu. Pengaturcaraan berdasarkan peristiwa adalah untuk membuat fungsi yang akan dipicu ketika peristiwa tertentu dipicu.
Mari kita lihat contoh asas menentukan peristiwa di Node.js.
Kami akan membuat acara yang disebut 'data_received'. Apabila acara ini dipicu, teks "data yang diterima" akan dihantar 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 Kod: -
- Gunakan fungsi memerlukan untuk memasukkan modul 'acara'. Dengan modul ini, anda akan dapat membuat acara di Node.js.
- Buat pemancar acara baru. Ini digunakan untuk mengikat peristiwa, yang dalam kasus kami adalah "data_received" ke fungsi panggilan balik yang ditentukan pada langkah3.
- Kami menentukan fungsi berdasarkan peristiwa yang mengatakan bahawa jika sekiranya peristiwa "data_received" dipicu, maka kita harus mengeluarkan teks "data_received" ke konsol.
- Akhirnya, kita mempunyai pencetus manual acara kita menggunakan fungsi eventEmiter.emit. Ini akan mencetuskan peristiwa data_received.
Semasa program dijalankan, teks "data yang diterima" akan dihantar ke konsol seperti gambar di bawah.
Memancarkan Acara
Semasa menentukan peristiwa, ada kaedah yang berbeza untuk acara yang boleh dipanggil. Topik ini memfokuskan kepada melihat masing-masing secara terperinci.
- Pengendali acara sekali sahaja
Kadang-kadang anda mungkin berminat untuk bertindak balas terhadap peristiwa hanya pada kali pertama ia berlaku. Dalam situasi seperti ini, anda boleh menggunakan kaedah sekali ().
Mari lihat bagaimana kita dapat menggunakan kaedah sekali untuk pengendali acara.
Penjelasan Kod: -
- Di sini kita menggunakan kaedah 'sekali' untuk mengatakan bahawa untuk acara 'data_received,' fungsi panggilan balik hanya dapat dijalankan sekali.
- Di sini kami mencetuskan acara 'data_received' secara manual.
- Apabila peristiwa 'data_received' dipicu lagi, kali ini, tidak ada yang akan berlaku. Ini kerana langkah pertama di mana kami mengatakan bahawa acara itu hanya boleh dipicu sekali.
Sekiranya kod dijalankan dengan betul, output dalam log akan 'data_diterima dengan berjaya'. Mesej ini hanya akan muncul sekali di konsol.
- Memeriksa Pendengar Acara
Pada bila-bila masa sepanjang hayatnya, pemancar acara boleh mempunyai sifar atau lebih pendengar yang melekat padanya. Pendengar untuk setiap jenis acara dapat diperiksa dengan beberapa cara.
Sekiranya anda berminat hanya menentukan bilangan pendengar yang dilampirkan, maka jangan cari kaedah lain daripada kaedah EventEmitter.listenerCount ().
( Catatan: Pendengar penting kerana program utama harus mengetahui jika pendengar ditambahkan dengan cepat ke acara, jika tidak, program tersebut akan gagal berfungsi kerana pendengar tambahan akan dipanggil.)
Penjelasan Kod: -
- Kami menentukan jenis eventEmitter yang diperlukan untuk menggunakan kaedah yang berkaitan dengan peristiwa.
- Kami kemudian menentukan objek yang disebut pemancar yang akan digunakan untuk menentukan pengendali acara kami.
- Kami membuat 2 pengendali acara yang pada dasarnya tidak melakukan apa-apa. Perkara ini tetap mudah untuk contoh kami hanya untuk menunjukkan bagaimana kaedah listenerCount berfungsi.
- Sekarang apabila anda menggunakan kaedah listenerCount pada acara data_received kami, ia akan menghantar jumlah pendengar acara yang dilampirkan ke acara ini di log konsol.
Sekiranya kod dijalankan dengan betul, nilai 2 akan ditunjukkan dalam log konsol.
- AcaraListener baru
Setiap kali pengendali acara baru didaftarkan, pemancar acara memancarkan acaraListener baru. Acara ini digunakan untuk mengesan pengendali acara baru. Anda biasanya menggunakan acara newListener apabila anda perlu memperuntukkan sumber atau melakukan beberapa tindakan untuk setiap pengendali acara 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 Kod: -
- Kami membuat pengendali acara baru untuk acara 'newListener'. Oleh itu, setiap kali pengendali acara baru didaftarkan, teks "Tambah pendengar untuk" + nama acara akan dipaparkan di konsol.
- Di sini kami menulis kepada konsol teks "Tambah pendengar untuk" + nama acara untuk setiap acara yang didaftarkan.
- Kami menentukan 2 pengendali acara untuk acara kami 'data_received'.
Sekiranya kod di atas dilaksanakan dengan betul, teks di bawah akan ditunjukkan di konsol. Ini hanya menunjukkan bahawa pengendali acara 'newListener' dicetuskan dua kali.
Pendengar ditambahkan untuk acara data_received
Pendengar ditambahkan untuk acara data_received
Ringkasan
- Aliran digunakan di Node.js untuk membaca dan menulis data dari peranti Input-Output. Node.js memanfaatkan perpustakaan 'fs' untuk membuat aliran ke fail yang boleh dibaca dan boleh ditulis. Aliran ini dapat digunakan untuk membaca dan menulis data dari fail.
- Paip boleh digunakan untuk menghubungkan beberapa aliran bersama. Salah satu contoh yang paling biasa adalah menyalurkan aliran baca dan tulis bersama untuk pemindahan data dari satu fail ke fail lain.
- Node.js sering juga ditandai sebagai kerangka berdasarkan peristiwa, dan sangat mudah untuk menentukan peristiwa di Node.js. Fungsi dapat ditentukan yang bertindak balas terhadap peristiwa ini.
- Acara juga memperlihatkan kaedah untuk bertindak balas terhadap peristiwa penting. Sebagai contoh, kita telah melihat pengendali peristiwa sekali () yang dapat digunakan untuk memastikan bahawa fungsi panggilan balik hanya dijalankan sekali ketika peristiwa dipicu.