Solmun js-suoratoisto-opas: Filestream, Pipes

Sisällysluettelo:

Anonim

Tässä opetusohjelmassa opit

  • Tiedostovirta Node.js-tiedostossa
  • Putket Node.js: ssä
  • Tapahtumat Node.js-tiedostossa
  • Tapahtumien lähettäminen

Tiedostovirta Node.js-tiedostossa

Node käyttää laajasti virtauksia tiedonsiirtomekanismina.

Esimerkiksi kun syötät mitä tahansa konsolille käyttämällä console.log-toimintoa, lähetät tiedot konsolille tosiasiallisesti virran avulla.

Node.js: llä on myös mahdollisuus suoratoistaa tietoja tiedostoista, jotta ne voidaan lukea ja kirjoittaa asianmukaisesti. Tarkastelemme nyt esimerkkiä siitä, miten voimme käyttää virtoja tiedostojen lukemiseen ja kirjoittamiseen. Meidän on noudatettava alla mainittuja vaiheita tässä esimerkissä

Vaihe 1) Luo tiedosto data.txt, jolla on alla olevat tiedot. Oletetaan, että tämä tiedosto on tallennettu paikallisen koneemme D-asemaan.

Opetusohjelma Node.js: ssä

Johdanto

Tapahtumat

Generaattorit

Datayhteydet

Jasmiinin käyttö

Vaihe 2) Kirjoita asianmukainen koodi, joka käyttää virtoja tietojen lukemiseen tiedostosta.

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

Koodin selitys: -

  1. Meidän on ensin sisällytettävä 'fs' -moduulit, jotka sisältävät kaikki toiminnot, joita tarvitaan virtojen luomiseen.
  2. Seuraavaksi luomme luettavan virran menetelmällä - createReadStream. Syötteenä annamme data.txt-tiedostomme sijainnin.
  3. Funktio steam.on on tapahtumankäsittelijä, ja siinä määritämme ensimmäisen parametrin dataksi. Tämä tarkoittaa, että aina kun tietoa tulee tiedostovirrasta, suorita takaisinsoittotoiminto. Meidän tapauksessamme olemme määrittelemässä takaisinsoittotoiminnon, joka suorittaa 2 perusvaihetta. Ensimmäinen on muuntaa tiedostosta luetut tiedot merkkijonoksi. Toinen olisi lähettää muunnettu merkkijono ulostulona konsolille.
  4. Otamme jokaisen tietovirrasta luetun tiedonpalan ja muunnamme sen merkkijonoksi.
  5. Lopuksi lähetämme jokaisen muunnetun merkkijonon ulostulon konsolille.

Tuotos:

  • Jos koodi suoritetaan oikein, näet yllä olevan lähdön konsolissa. Tämä lähtö on sama kuin data.txt-tiedostossa.

Kirjoittaminen tiedostoon

Samalla tavalla kuin luomme lukuvirran, voimme myös luoda kirjoitusvirran tietojen kirjoittamiseksi tiedostoon. Luodaan ensin tyhjä tiedosto, jossa ei ole sisältöä nimeltä data.txt. Oletetaan, että tämä tiedosto on sijoitettu tietokoneemme D-asemaan.

Alla oleva koodi osoittaa, kuinka voimme kirjoittaa tietoja tiedostoon.

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

Koodin selitys: -

  1. Luomme kirjoitettavan virran menetelmällä - createWriteStream. Syötteenä annamme data.txt-tiedostomme sijainnin.
  2. Seuraavaksi käytimme stream.write-menetelmää eri tekstirivien kirjoittamiseen tekstitiedostoon. Stream huolehtii näiden tietojen kirjoittamisesta data.txt-tiedostoon.

Jos avaat data.txt-tiedoston, näet nyt seuraavat tiedot tiedostossa

Opetusohjelma Node.js: ssä

Johdanto

Tapahtumat

Generaattorit

Datayhteydet

Jasmiinin käyttö

Putket Node.js: ssä

Solmu-sovelluksissa virrat voidaan liittää yhteen käyttämällä pipe () -menetelmää, joka vaatii kaksi argumenttia:

  • Vaadittava kirjoitettava virta, joka toimii tietojen ja
  • Valinnainen objekti, jota käytetään vaihtoehtojen välittämiseen.

Tyypillinen esimerkki putkien käytöstä, jos haluat siirtää tietoja yhdestä tiedostosta toiseen.

Joten katsotaan esimerkki siitä, kuinka voimme siirtää tietoja yhdestä tiedostosta toiseen putkilla.

Vaihe 1) Luo tiedosto nimeltä datainput.txt, jolla on alla olevat tiedot. Oletetaan, että tämä tiedosto on tallennettu paikallisen koneemme D-asemaan.

Opetusohjelma Node.js: ssä

Johdanto

Tapahtumat

Generaattorit

Datayhteydet

Jasmiinin käyttö

Vaihe 2) Luo tyhjä tyhjä tiedosto nimeltä dataOutput.txt ja aseta se paikallisen koneesi D-asemaan.

Vaihe 3) Kirjoita alla oleva koodi tietojen siirtämiseksi datainput.txt-tiedostosta dataOutput.txt-tiedostoon.

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

Koodin selitys: -

  1. Luomme ensin "readstream" datainput.txt-tiedostollemme, joka sisältää kaikki tiedot, jotka on siirrettävä uuteen tiedostoon.
  2. Sitten meidän on luotava "kirjoitusvirta" dataOutput.txt-tiedostoon, joka on tyhjä tiedostomme ja on kohde tietojen siirtämiselle datainput.txt-tiedostosta.
  3. Sitten siirrämme tietoja putkikomennolla datasta readstreamista kirjoitusvirtaan. Putkikomento vie kaikki lukuvirtaan tulevat tiedot ja työntävät ne kirjoitusvirtaan.

Jos avaat nyt dataOutput.txt-tiedoston, näet kaikki datainput.txt-tiedostossa olevat tiedot.

Tapahtumat Node.js-tiedostossa

Tapahtumat ovat yksi Node.js: n keskeisistä käsitteistä, ja joskus Node.js: ää kutsutaan tapahtumapohjaiseksi kehykseksi.

Pohjimmiltaan tapahtuma tapahtuu. Jos esimerkiksi yhteys muodostetaan tietokantaan, tietokantayhteystapahtuma laukaistaan. Tapahtumaohjattu ohjelmointi on luoda toimintoja, jotka käynnistyvät, kun tietyt tapahtumat laukaistaan.

Katsotaanpa perusesimerkki tapahtuman määrittelemisestä Node.js: ssä.

Aiomme luoda tapahtuman nimeltä 'data_received'. Kun tämä tapahtuma käynnistyy, teksti "data vastaanotettu" lähetetään konsolille.

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

Koodin selitys: -

  1. Käytä vaativat-toimintoa sisällyttääksesi tapahtumamoduulin. Tämän moduulin avulla voit luoda tapahtumia Node.js: ssä.
  2. Luo uusi tapahtumien lähettäjä. Tätä käytetään tapahtuman, joka on tapauksessamme "data_received", sitomiseen takaisinsoittofunktioon, joka määritetään vaiheessa 3.
  3. Määritämme tapahtumapohjaisen funktion, joka sanoo, että jos "data_received" -tapahtuma laukaisee, meidän pitäisi antaa teksti "data_received" konsolille.
  4. Lopuksi meillä on tapahtumamme manuaalinen käynnistys tapahtumalla eventEmiter.emit. Tämä käynnistää data_received-tapahtuman.

Kun ohjelma on suoritettu, teksti "tiedot vastaanotettu" lähetetään konsolille alla olevan kuvan mukaisesti.

Tapahtumien lähettäminen

Tapahtumia määritettäessä on olemassa erilaisia ​​menetelmiä tapahtumille, joihin voidaan vedota. Tämä aihe keskittyy tarkastelemaan kutakin niistä yksityiskohtaisesti.

  1. Kerran tapahtumankäsittelijät

Joskus saatat olla kiinnostunut reagoimaan tapahtumaan vasta ensimmäisen kerran. Näissä tilanteissa voit käyttää kerran () -menetelmää.

Katsotaanpa, kuinka voimme käyttää kerran -menetelmää tapahtumankäsittelijöille.

Koodin selitys: -

  1. Tässä käytämme 'kerran' -menetelmää sanomaan, että tapahtumalle 'data_received', soittopyyntö tulisi suorittaa vain kerran.
  2. Tässä laukaistaan ​​'data_received' -tapahtuma manuaalisesti.
  3. Kun 'data_received' -tapahtuma käynnistyy uudelleen, tällä kertaa mitään ei tapahdu. Tämä johtuu ensimmäisestä vaiheesta, jossa sanoimme, että tapahtuma voidaan laukaista vain kerran.

Jos koodi suoritetaan oikein, lokin ulostulo on 'data_received onnistuneesti'. Tämä viesti näkyy vain kerran konsolissa.

  1. Tapahtumakuuntelijoiden tarkastaminen

Tapahtumien aiheuttajalla voi olla elinkaarensa milloin tahansa nolla tai useampia kuuntelijoita. Jokaisen tapahtumalajin kuuntelijat voidaan tarkastaa useilla tavoilla.

Jos olet kiinnostunut määrittämään vain liitettyjen kuuntelijoiden lukumäärän, älä etsi enää EventEmitter.listenerCount () -menetelmää.

( Huomaa: Kuuntelijat ovat tärkeitä, koska pääohjelman tulisi tietää, lisätäänkö kuuntelijoita lennossa tapahtumaan, muuten ohjelma ei toimi, koska lisää kuuntelijoita kutsutaan.)

Koodin selitys: -

  1. Määritämme tapahtumapäästötyypin, jota tarvitaan tapahtumiin liittyvien menetelmien käyttämiseen.
  2. Määritämme sitten objektin nimeltä emitter, jota käytetään tapahtumankäsittelijöiden määrittelemiseen.
  3. Luomme 2 tapahtumankäsittelijää, jotka eivät periaatteessa tee mitään. Tämä pidetään yksinkertaisena esimerkissämme vain osoittaaksemme, kuinka kuuntelijan laskentamenetelmä toimii.
  4. Kun nyt käytät listenerCount-menetelmää data_received-tapahtumassamme, se lähettää tähän tapahtumaan liitettyjen tapahtumakuuntelijoiden määrän konsolilokiin.

Jos koodi suoritetaan oikein, arvo 2 näkyy konsolin lokissa.

  1. UusiListener-tapahtuma

Joka kerta kun uusi tapahtumankäsittelijä rekisteröidään, tapahtumien lähettäjä lähettää uudenListener-tapahtuman. Tätä tapahtumaa käytetään uusien tapahtumankäsittelijöiden tunnistamiseen. Käytät yleensä newListener-tapahtumaa, kun sinun on allokoitava resursseja tai suoritettava jokaiselle toiminnolle jokaiselle uudelle tapahtumankäsittelijälle.

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

Koodin selitys: -

  1. Luomme uuden tapahtumankäsittelijän 'newListener' -tapahtumaan. Joten aina kun uusi tapahtumakäsittelijä rekisteröidään, teksti "Lisätty kuuntelija" + tapahtuman nimi näkyy konsolissa.
  2. Tässä kirjoitetaan konsolille teksti "Lisätty kuuntelija" + tapahtuman nimi jokaiselle rekisteröidylle tapahtumalle.
  3. Määrittelemme 2 tapahtumankäsittelijää tapahtumallemme 'data_received'.

Jos yllä oleva koodi suoritetaan oikein, alla oleva teksti näkyy konsolissa. Se vain osoittaa, että 'newListener' -tapahtumankäsittelijä laukaistiin kahdesti.

Lisätty kuuntelija data_vastaanotetuille tapahtumille

Lisätty kuuntelija data_vastaanotetuille tapahtumille

Yhteenveto

  • Suoratoistoja käytetään Node.js-ohjelmassa tietojen lukemiseen ja kirjoittamiseen Input-Output-laitteista. Node.js käyttää 'fs' -kirjastoa luodakseen luettavia ja kirjoitettavia virtauksia tiedostoihin. Näitä virtoja voidaan käyttää tietojen lukemiseen ja kirjoittamiseen tiedostoista.
  • Putkia voidaan käyttää yhdistämään useita virtauksia yhteen. Yksi yleisimmistä esimerkeistä on luku- ja kirjoitusvirran yhdistäminen datan siirtämiseksi tiedostosta toiseen.
  • Node.js on myös merkitty usein tapahtumapohjaiseksi kehykseksi, ja tapahtumien määritteleminen Node.js: ssä on erittäin helppoa. Näihin tapahtumiin reagoivat toiminnot voidaan määritellä.
  • Tapahtumat paljastavat myös tapoja reagoida avaintapahtumiin. Olemme esimerkiksi nähneet kerran () -tapahtumakäsittelijän, jota voidaan käyttää varmistamaan, että takaisinsoittotoiminto suoritetaan vain kerran, kun tapahtuma laukaistaan.