Vodič za strujanje čvorova js: Datoteke datoteka, cijevi

U ovom ćete tutorijalu naučiti

  • Datoteka u Node.js
  • Cijevi u Node.js
  • Događaji u Node.js
  • Emitiranje događaja

Datoteka u Node.js

Node opsežno koristi tokove kao mehanizam za prijenos podataka.

Na primjer, kada na konzolu izlazite bilo što pomoću funkcije console.log, zapravo koristite tok za slanje podataka na konzolu.

Node.js također ima mogućnost strujanja podataka iz datoteka kako bi ih se moglo pravilno čitati i pisati. Sada ćemo pogledati primjer kako možemo koristiti streamove za čitanje i pisanje iz datoteka. Za ovaj primjer moramo slijediti dolje navedene korake

Korak 1) Stvorite datoteku pod nazivom data.txt koja sadrži podatke u nastavku. Pretpostavimo da je ova datoteka pohranjena na D pogonu našeg lokalnog stroja.

Vodič za Node.js

Uvod

Događaji

Generatori

Podatkovna povezanost

Korištenje jasmina

Korak 2) Napišite odgovarajući kôd koji će koristiti streamove za čitanje podataka iz datoteke.

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

Objašnjenje koda: -

  1. Prvo moramo uključiti 'fs' module koji sadrže svu funkcionalnost potrebnu za stvaranje streamova.
  2. Dalje kreiramo čitljiv tok pomoću metode - createReadStream. Kao ulaz dajemo lokaciju naše datoteke data.txt.
  3. Funkcija steam.on obrađivač je događaja i u njoj prvi parametar navodimo kao 'podatak'. To znači da kad god podaci dođu u tok iz datoteke, tada izvršite funkciju povratnog poziva. U našem slučaju definiramo funkciju povratnog poziva koja će provesti 2 osnovna koraka. Prvo je pretvoriti podatke pročitane iz datoteke u niz. Druga bi bila slanje pretvorenog niza kao izlaza na konzolu.
  4. Uzimamo svaki dio podataka koji se pročita iz toka podataka i pretvaramo ga u niz.
  5. Napokon, šaljemo izlaz svakog konvertiranog niza u konzolu.

Izlaz:

  • Ako se kôd pravilno izvrši, vidjet ćete gornji izlaz u konzoli. Ovaj izlaz bit će isti kao onaj u datoteci data.txt.

Zapisivanje u datoteku

Na isti način, kako stvaramo tok čitanja, možemo stvoriti i tok pisanja za upisivanje podataka u datoteku. Stvorimo prvo praznu datoteku bez sadržaja koja se naziva data.txt. Pretpostavimo da je ova datoteka smještena u D pogon našeg računala.

Donji kod pokazuje kako možemo zapisati podatke u datoteku.

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")

Objašnjenje koda: -

  1. Stvaramo tok za pisanje pomoću metode - createWriteStream. Kao ulaz dajemo lokaciju naše datoteke data.txt.
  2. Dalje smo koristili metodu stream.write za upisivanje različitih redaka teksta u našu tekstualnu datoteku. Stream će se pobrinuti za upisivanje ovih podataka u datoteku data.txt.

Ako otvorite datoteku data.txt, u datoteci ćete sada vidjeti sljedeće podatke

Vodič za Node.js

Uvod

Događaji

Generatori

Podatkovna povezanost

Korištenje jasmina

Cijevi u Node.js

Unutar aplikacija Node, tijekovi se mogu spojiti cjevovodom pomoću metode pipe () koja uzima dva argumenta:

  • Potreban tok za pisanje koji služi kao odredište podataka i
  • Izborni objekt koji se koristi za prosljeđivanje opcija.

Tipičan primjer upotrebe cijevi ako želite prenijeti podatke iz jedne datoteke u drugu.

Pa da vidimo primjer kako možemo prenositi podatke iz jedne datoteke u drugu pomoću cijevi.

Korak 1) Stvorite datoteku nazvanu datainput.txt koja sadrži podatke u nastavku. Pretpostavimo da je ova datoteka pohranjena na D pogonu našeg lokalnog stroja.

Vodič za Node.js

Uvod

Događaji

Generatori

Podatkovna povezanost

Korištenje jasmina

Korak 2) Stvorite praznu praznu datoteku nazvanu dataOutput.txt i stavite je na D pogon vašeg lokalnog računala.

Korak 3) Napišite donji kod da biste izvršili prijenos podataka iz datoteke datainput.txt u datoteku dataOutput.txt.

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

Objašnjenje koda: -

  1. Prvo stvaramo "tok čitanja" za našu datoteku datainput.txt koja sadrži sve naše podatke koje treba prenijeti u novu datoteku.
  2. Zatim moramo stvoriti "tok pisanja" za našu datoteku dataOutput.txt, koja je naša prazna datoteka i odredište je za prijenos podataka iz datoteke datainput.txt.
  3. Zatim koristimo naredbu pipe za prijenos podataka iz čitavog toka u tok upisa. Naredba pipe uzet će sve podatke koji dolaze u tok čitanja i gurnuti ih u tok pisanja.

Ako sada otvorite datoteku dataOutput.txt, vidjet ćete sve podatke koji su bili prisutni u datoteci datainput.txt.

Događaji u Node.js

Događaji su jedan od ključnih pojmova u Node.js-u, a ponekad se Node.js naziva okvirom vođenim događajima.

U osnovi, događaj je nešto što se događa. Na primjer, ako se uspostavi veza s bazom podataka, tada se pokreće događaj povezivanja s bazom podataka. Programiranje vođeno događajima je stvaranje funkcija koje će se aktivirati kada se pokrenu određeni događaji.

Pogledajmo osnovni primjer definiranja događaja u Node.js.

Stvorit ćemo događaj pod nazivom 'data_received'. Kada se ovaj događaj pokrene, tekst "primljeni podaci" poslat će se na konzolu.

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

Objašnjenje koda: -

  1. Upotrijebite funkciju require da biste uključili modul 'događaji'. Pomoću ovog modula moći ćete stvarati događaje u Node.js.
  2. Stvorite novi emiter događaja. To se koristi za vezanje događaja, koji je u našem slučaju "data_received" na funkciju povratnog poziva koja je definirana u koraku 3.
  3. Definiramo funkciju vođenu događajima koja kaže da ako u slučaju pokretanja događaja "data_received" onda na konzolu iznesemo tekst "data_received".
  4. Napokon, imamo ručni okidač našeg događaja pomoću funkcije eventEmiter.emit. To će pokrenuti događaj data_received.

Kada se program pokrene, tekst "primljeni podaci" poslat će se na konzolu kao što je prikazano dolje.

Emitiranje događaja

Pri definiranju događaja postoje različite metode za događaje na koje se može pozvati. Ova se tema usredotočuje na detaljno sagledavanje svakog od njih.

  1. Jednokratni voditelji događaja

Ponekad bi vas moglo zanimati reagiranje na događaj samo kad se prvi put dogodi. U tim situacijama možete koristiti metodu Once ().

Pogledajmo kako možemo iskoristiti metodu nekada za rukovatelje događajima.

Objašnjenje koda: -

  1. Ovdje koristimo metodu 'Once' da kažemo da se za događaj 'data_received' funkcija povratnog poziva treba izvršiti samo jednom.
  2. Ovdje ručno pokrećemo događaj 'data_received'.
  3. Kada se ponovno pokrene događaj 'data_received', ovaj se put ništa neće dogoditi. To je zbog prvog koraka u kojem smo rekli da se događaj mogao pokrenuti samo jednom.

Ako se kôd pravilno izvrši, izlaz u zapisnik bit će 'podaci_prihvaćeni uspješno'. Ova će se poruka pojaviti samo jednom u konzoli.

  1. Pregled slušatelja događaja

U bilo kojem trenutku svog života, odašiljač događaja može imati priključenih nula ili više slušatelja. Slušatelji za svaku vrstu događaja mogu se pregledati na nekoliko načina.

Ako vas zanima samo određivanje broja priključenih slušatelja, ne tražite dalje od metode EventEmitter.listenerCount ().

( Napomena: Slušatelji su važni jer glavni program treba znati dodaju li se slušatelji u hodu na neki događaj, inače će program pokvariti jer će se pozvati dodatni slušatelji.)

Objašnjenje koda: -

  1. Definiramo eventEmitter tip koji je potreban za upotrebu metoda povezanih s događajima.
  2. Tada definiramo objekt koji se naziva emiter i koji će se koristiti za definiranje naših rukovatelja događajima.
  3. Stvaramo 2 voditelja događaja koji u osnovi ne rade ništa. Ovo je jednostavno za naš primjer samo da bi se pokazalo kako funkcionira metoda listenerCount.
  4. Sada kada prizovete metodu listenerCount na našem događaju data_received, ona će poslati broj slušatelja događaja koji su pridruženi ovom događaju u zapisniku konzole.

Ako se kôd pravilno izvrši, vrijednost 2 prikazat će se u zapisniku konzole.

  1. Događaj novog slušatelja

Svaki put kad se registrira novi obrađivač događaja, odašiljač događaja emitira novi događaj Slušatelja. Ovaj se događaj koristi za otkrivanje novih rukovatelja događajima. Događaj newListener obično koristite kada trebate dodijeliti resurse ili izvesti neku radnju za svaki novi rukovatelj događajima.

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() {});

Objašnjenje koda: -

  1. Izrađujemo novi rukovatelj događajima za događaj 'newListener'. Dakle, kad god se registrira novi rukovatelj događajima, na konzoli će se prikazati tekst "Dodano slušatelj za" + naziv događaja.
  2. Ovdje na konzolu zapisujemo tekst "Dodano slušatelj za" + naziv događaja za svaki registrirani događaj.
  3. Definiramo 2 rukovatelja događaja za naš događaj 'data_received'.

Ako se gornji kôd pravilno izvrši, donji tekst prikazat će se na konzoli. To samo pokazuje da je obrađivač događaja 'newListener' pokrenut dva puta.

Dodan je slušatelj za događaje koji su primljeni u podatke

Dodan je slušatelj za događaje koji su primljeni u podatke

Sažetak

  • Potoci se koriste u Node.js za čitanje i pisanje podataka s ulazno-izlaznih uređaja. Node.js koristi knjižnicu 'fs' za stvaranje čitljivih i zapisljivih tokova datoteka. Ti se tokovi mogu koristiti za čitanje i pisanje podataka iz datoteka.
  • Cijevi se mogu koristiti za povezivanje više struja zajedno. Jedan od najčešćih primjera je spajanje toka čitanja i pisanja za prijenos podataka iz jedne datoteke u drugu.
  • Node.js je često označen kao okvir vođen događajima, a vrlo je jednostavno definirati događaje u Node.js. Mogu se definirati funkcije koje reagiraju na ove događaje.
  • Događaji također izlažu metode za odgovor na ključne događaje. Na primjer, vidjeli smo rukovatelj događajima Once () koji se može koristiti da bi se osiguralo da se funkcija povratnog poziva izvršava samo jednom kada se događaj pokrene.

Zanimljivi članci...