I denne vejledning lærer du
- Filestream i Node.js
- Rør i Node.js
- Begivenheder i Node.js
- Udsendelse af begivenheder
Filestream i Node.js
Node bruger omfattende streams som en dataoverførselsmekanisme.
For eksempel, når du sender noget til konsollen ved hjælp af funktionen console.log, bruger du faktisk en stream til at sende dataene til konsollen.
Node.js har også evnen til at streame data fra filer, så de kan læses og skrives korrekt. Vi vil nu se på et eksempel på, hvordan vi kan bruge streams til at læse og skrive fra filer. Vi er nødt til at følge nedenstående trin for dette eksempel
Trin 1) Opret en fil kaldet data.txt, som har nedenstående data. Lad os antage, at denne fil er gemt på D-drevet på vores lokale maskine.
Tutorial på Node.js
Introduktion
Begivenheder
Generatorer
Dataforbindelse
Brug af Jasmine
Trin 2) Skriv den relevante kode, som bruger streams til at læse data fra filen.
var fs = require("fs");var stream;stream = fs.createReadStream("D://data.txt");stream.on("data", function(data) {var chunk = data.toString();console.log(chunk);});
Kode Forklaring: -
- Vi skal først inkludere 'fs' -modulerne, der indeholder al den funktionalitet, der kræves for at oprette streams.
- Dernæst opretter vi en læsbar strøm ved hjælp af metoden - createReadStream. Som input giver vi placeringen af vores data.txt-fil.
- Steam.on-funktionen er en begivenhedshåndterer, og i den angiver vi den første parameter som 'data'. Dette betyder, at når der kommer data i streamen fra filen, skal du udføre en tilbagekaldsfunktion. I vores tilfælde definerer vi en tilbagekaldsfunktion, der udfører 2 grundlæggende trin. Den første er at konvertere de data, der læses fra filen, som en streng. Det andet ville være at sende den konverterede streng som output til konsollen.
- Vi tager hvert stykke data, der læses fra datastrømmen, og konverterer det til en streng.
- Endelig sender vi output fra hver strengkonverteret klump til konsollen.
Produktion:
- Hvis koden udføres korrekt, vil du se ovenstående output i konsollen. Denne output vil være den samme som i data.txt-filen.
Skrivning til en fil
På samme måde, at vi opretter en læsestrøm, kan vi også oprette en skrivestrøm til at skrive data til en fil. Lad os først oprette en tom fil uden indhold kaldet data.txt. Lad os antage, at denne fil er placeret i D-drevet på vores computer.
Nedenstående kode viser, hvordan vi kan skrive data til filen.
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")
Kode Forklaring: -
- Vi opretter en skrivbar strøm ved hjælp af metoden - createWriteStream. Som input giver vi placeringen af vores data.txt-fil.
- Dernæst brugte vi stream.write en metode til at skrive de forskellige tekstlinjer til vores tekstfil. Strømmen tager sig af at skrive disse data til data.txt-filen.
Hvis du åbner data.txt-filen, vil du nu se følgende data i filen
Tutorial på Node.js
Introduktion
Begivenheder
Generatorer
Dataforbindelse
Brug af Jasmine
Rør i Node.js
Inden for Node-applikationer kan streams røres sammen ved hjælp af metoden pipe (), som tager to argumenter:
- En påkrævet skrivbar strøm, der fungerer som destination for data og
- Et valgfrit objekt, der bruges til at videregive indstillinger.
Et typisk eksempel på brug af rør, hvis du vil overføre data fra den ene fil til den anden.
Så lad os se et eksempel på, hvordan vi kan overføre data fra den ene fil til den anden ved hjælp af rør.
Trin 1) Opret en fil kaldet datainput.txt, som har nedenstående data. Lad os antage, at denne fil er gemt på D-drevet på vores lokale maskine.
Tutorial på Node.js
Introduktion
Begivenheder
Generatorer
Dataforbindelse
Brug af Jasmine
Trin 2) Opret en tom tom fil kaldet dataOutput.txt og placer den på D-drevet på din lokale maskine.
Trin 3) Skriv nedenstående kode for at udføre overførsel af data fra filen datainput.txt til filen dataOutput.txt.
var fs = require("fs");var readStream = fs.createReadStream("D://datainput.txt");var writeStream = fs.createWriteStream("D://dataOutput.txt");readStream.pipe(writeStream);
Kode Forklaring: -
- Vi opretter først en "readstream" til vores datainput.txt-fil, der indeholder alle vores data, der skal overføres til den nye fil.
- Vi skal derefter oprette en "skrivestrøm" til vores dataOutput.txt-fil, som er vores tomme fil og er destinationen for overførsel af data fra datainput.txt-filen.
- Vi bruger derefter kommandoen pipe til at overføre data fra readstream til skrivestrømmen. Rørkommandoen tager alle de data, der kommer ind i readstream, og skubber dem til wrestream.
Hvis du nu åbner dataOutput.txt-filen, vil du se alle de data, der var til stede i datainput.txt-filen.
Begivenheder i Node.js
Begivenheder er et af nøglebegreberne i Node.js og undertiden kaldes Node.js som en hændelsesdrevet ramme.
Dybest set er en begivenhed noget der sker. For eksempel, hvis der oprettes en forbindelse til en database, udløses databaseforbindelseshændelsen. Begivenhedsdrevet programmering er at oprette funktioner, der udløses, når specifikke begivenheder udløses.
Lad os se på et grundlæggende eksempel på at definere en begivenhed i Node.js.
Vi skal oprette en begivenhed kaldet 'data_received'. Når denne begivenhed udløses, sendes teksten "data modtaget" til konsollen.
var events = require('events');var eventEmitter = new events.EventEmitter();eventEmitter.on('data_received', function() {console.log('data received succesfully.');});eventEmitter.emit('data_received');
Kode Forklaring: -
- Brug den krævende funktion til at inkludere modulet 'begivenheder'. Med dette modul vil du være i stand til at oprette begivenheder i Node.js.
- Opret en ny emitter. Dette bruges til at binde begivenheden, som i vores tilfælde er "data_modtaget" til en tilbagekaldsfunktion, der er defineret i trin 3.
- Vi definerer en hændelsesdrevet funktion, der siger, at hvis "data_received" -hændelsen udløses, skal vi sende teksten "data_received" til konsollen.
- Endelig har vi en manuel udløser af vores begivenhed ved hjælp af funktionen eventEmiter.emit. Dette vil udløse data_modtaget begivenhed.
Når programmet køres, sendes teksten "data modtaget" til konsollen som vist nedenfor.
Udsendelse af begivenheder
Når begivenheder defineres, er der forskellige metoder til begivenheder, som kan påberåbes. Dette emne fokuserer på at se på hver enkelt af dem i detaljer.
- Engangshændelser
Nogle gange kan du være interesseret i kun at reagere på en begivenhed første gang den finder sted. I disse situationer kan du bruge en gang () -metoden.
Lad os se, hvordan vi kan bruge metoden en gang til begivenhedshåndterere.
Kode Forklaring: -
- Her bruger vi metoden 'en gang' til at sige, at til begivenheden 'data_received' skal tilbagekaldsfunktionen kun udføres en gang.
- Her udløser vi manuelt 'data_received' begivenheden.
- Når begivenheden 'data_received' udløses igen, sker der ikke denne gang noget. Dette skyldes det første trin, hvor vi sagde, at begivenheden kun kunne udløses en gang.
Hvis koden udføres korrekt, bliver output i loggen 'data_modtaget med succes'. Denne meddelelse vises kun en gang i konsollen.
- Inspektion af begivenhedslyttere
På et hvilket som helst tidspunkt i sin levetid kan en begivenhedsudsender have nul eller flere lyttere knyttet til sig. Lytterne for hver begivenhedstype kan inspiceres på flere måder.
Hvis du kun er interesseret i at bestemme antallet af tilknyttede lyttere, skal du ikke lede længere end metoden EventEmitter.listenerCount ().
( Bemærk: Lyttere er vigtige, fordi hovedprogrammet skal vide, om lyttere føjes til en begivenhed, ellers fungerer programmet ikke, fordi yderligere lyttere bliver ringet op.)
Kode Forklaring: -
- Vi definerer en eventEmitter-type, der kræves for at bruge de hændelsesrelaterede metoder.
- Vi definerer derefter et objekt kaldet emitter, der vil blive brugt til at definere vores begivenhedshåndterere.
- Vi opretter 2 begivenhedsbehandlere, der stort set ikke gør noget. Dette holdes enkelt for vores eksempel bare for at vise, hvordan listenerCount-metoden fungerer.
- Når du nu påberåber listenerCount-metoden på vores data_received begivenhed, sender den antallet af begivenhedslyttere, der er knyttet til denne begivenhed, i konsolloggen.
Hvis koden udføres korrekt, vises værdien 2 i konsolloggen.
- The newListener Event
Hver gang en ny begivenhedshåndterer er registreret, udsender begivenhedsemitteren en newListener-begivenhed. Denne begivenhed bruges til at opdage nye begivenhedshåndterere. Du bruger typisk newListener-begivenhed, når du skal allokere ressourcer eller udføre nogle handlinger for hver nye begivenhedshåndterer.
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() {});
Kode Forklaring: -
- Vi opretter en ny begivenhedshåndterer til begivenheden 'newListener'. Så når en ny begivenhedshåndterer er registreret, vises teksten "Tilføjet lytter til" + begivenhedsnavnet i konsollen.
- Her skriver vi til konsollen teksten "Tilføjet lytter til" + begivenhedsnavnet for hver registreret begivenhed.
- Vi definerer 2 begivenhedshåndterere til vores begivenhed 'data_received'.
Hvis ovenstående kode udføres korrekt, vises nedenstående tekst i konsollen. Det viser bare, at begivenhedshåndteringen 'newListener' blev udløst to gange.
Tilføjet lytter til data-modtagne begivenheder
Tilføjet lytter til data-modtagne begivenheder
Resumé
- Streams bruges i Node.js til at læse og skrive data fra Input-Output-enheder. Node.js gør brug af 'fs' biblioteket til at oprette læsbare og skrivbare streams til filer. Disse streams kan bruges til at læse og skrive data fra filer.
- Rør kan bruges til at forbinde flere strømme sammen. Et af de mest almindelige eksempler er at rør læse- og skrivestrømmen sammen til overførsel af data fra den ene fil til den anden.
- Node.js er ofte også mærket som en hændelsesdrevet ramme, og det er meget let at definere begivenheder i Node.js. Der kan defineres funktioner, der reagerer på disse begivenheder.
- Begivenheder udsætter også metoder til at reagere på nøglehændelser. For eksempel har vi set en gang () begivenhedshåndterer, som kan bruges til at sikre, at en tilbagekaldsfunktion kun udføres en gang, når en begivenhed udløses.