Sõlme js voogude õpetus: failivoog, torud

Lang L: none (table-of-contents):

Anonim

Selles õpetuses saate teada

  • Failivoog Node.js-is
  • Torud Node.js-is
  • Sündmused Node.js-is
  • Sündmuste levitamine

Failivoog Node.js-is

Node kasutab andmeedastusmehhanismina laialdaselt vooge.

Näiteks kui väljastate midagi konsoolile funktsiooni console.log abil, kasutate andmete konsooli saatmiseks tegelikult voogu.

Node.js-l on ka võimalus failidest andmeid voogesitada, et neid oleks võimalik nõuetekohaselt lugeda ja kirjutada. Nüüd vaatame näite, kuidas saame voogude abil failidest lugeda ja kirjutada. Selle näite jaoks peame järgima allpool nimetatud samme

Samm 1) Looge fail nimega data.txt, millel on järgmised andmed. Oletame, et see fail on salvestatud meie kohaliku masina D-draivile.

Õpetus saidil Node.js

Sissejuhatus

Sündmused

Generaatorid

Andmete ühenduvus

Jasmiini kasutamine

2. samm. Kirjutage vastav kood, mis kasutab vooge failist andmete lugemiseks.

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

Koodi selgitus: -

  1. Kõigepealt peame lisama "fs" moodulid, mis sisaldavad kõiki voogude loomiseks vajalikke funktsioone.
  2. Järgmisena loome loetava voo, kasutades meetodit - createReadStream. Sisendina anname oma faili data.txt asukoha.
  3. Funktsioon steam.on on sündmuste käitleja ja selles määratleme esimese parameetri kui "andmed". See tähendab, et alati, kui faili voogesitatakse andmeid, käivitage tagasihelistamisfunktsioon. Meie puhul määratleme tagasihelistamisfunktsiooni, mis viib läbi kaks põhietappi. Esimene on failist loetud andmete teisendamine stringidena. Teine oleks teisendatud stringi saatmine väljundina konsoolile.
  4. Võtame iga andmevoo loetud andmepaki ja teisendame selle stringiks.
  5. Lõpuks saadame iga stringiga teisendatud tüki väljund konsoolile.

Väljund:

  • Kui kood on õigesti täidetud, näete konsoolis ülaltoodud väljundit. See väljund on sama mis failis data.txt.

Faili kirjutamine

Samamoodi, nagu loome lugemisvoo, saame ka faili andmete kirjutamiseks luua kirjutamisvoo. Loome kõigepealt tühja faili ilma sisuta nimega data.txt. Oletame, et see fail on paigutatud meie arvuti D-draivi.

Allpool olev kood näitab, kuidas saame faili andmeid kirjutada.

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

Koodi selgitus: -

  1. Loome kirjutatava voo, kasutades meetodit - createWriteStream. Sisendina anname oma faili data.txt asukoha.
  2. Järgmisena kasutasime meetodit stream.write erinevate tekstiridade kirjutamiseks meie tekstifaili. Voog hoolitseb nende andmete kirjutamise eest faili data.txt.

Kui avate faili data.txt, näete nüüd failis järgmisi andmeid

Õpetus saidil Node.js

Sissejuhatus

Sündmused

Generaatorid

Andmete ühenduvus

Jasmiini kasutamine

Torud Node.js-is

Node'i rakendustes saab vooge ühendada, kasutades meetodit pipe (), mis võtab kaks argumenti:

  • Nõutav kirjutatav voog, mis toimib andmete sihtkohana ja
  • Valikuline objekt, mida kasutatakse valikute edastamiseks.

Tüüpiline näide torude kasutamisest, kui soovite andmeid ühest failist teise edastada.

Nii et vaatame näite, kuidas saaksime torude abil andmeid ühest failist teise edastada.

Samm 1) Looge fail nimega datainput.txt, millel on järgmised andmed. Oletame, et see fail on salvestatud meie kohaliku masina D-draivile.

Õpetus saidil Node.js

Sissejuhatus

Sündmused

Generaatorid

Andmete ühenduvus

Jasmiini kasutamine

Samm 2) Looge tühi tühi fail nimega dataOutput.txt ja asetage see oma kohaliku masina D-draivile.

Samm 3) Kirjutage allolev kood andmete ülekandmiseks failist datainput.txt faili dataOutput.txt.

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

Koodi selgitus: -

  1. Loome kõigepealt oma faili datainput.txt "readstream", mis sisaldab kõiki meie andmeid, mis tuleb uude faili üle kanda.
  2. Seejärel peame looma faili dataOutput.txt "kirjutamise voo", mis on meie tühi fail ja mis on andmete edastamise failist datainput.txt sihtkoht.
  3. Seejärel kasutame käsku pipe andmete ülekandmiseks lugemisvoost kirjutusvoogu. Pipe-käsk võtab kõik readstream-i jõudvad andmed ja viib need käsivoogu.

Kui avate nüüd faili dataOutput.txt, näete kõiki andmeid, mis olid failis datainput.txt.

Sündmused Node.js-is

Sündmused on Node.js-is üks põhimõisteid ja mõnikord nimetatakse Node.js-i sündmuspõhiseks raamistikuks.

Põhimõtteliselt on sündmus midagi juhtuvat. Näiteks kui andmebaasiga on ühendus loodud, käivitatakse andmebaasi ühenduse sündmus. Sündmustepõhine programmeerimine on funktsioonide loomine, mis käivitatakse konkreetsete sündmuste käivitamisel.

Vaatame Node.js-is sündmuse määratlemise põhinäidet.

Loome sündmuse nimega 'data_received'. Selle sündmuse käivitamisel saadetakse tekst "andmed vastu võetud" konsoolile.

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

Koodi selgitus: -

  1. Mooduli 'events' kaasamiseks kasutage funktsiooni nõuda. Selle mooduli abil saate luua sündmusi kaustas Node.js.
  2. Looge uus sündmuste kiirgaja. Seda kasutatakse sündmuse sidumiseks, mis meie puhul on "data_received" tagasihelistamisfunktsiooniga, mis on määratletud 3. etapis.
  3. Määratleme sündmustepõhise funktsiooni, mis ütleb, et kui käivitatakse sündmus "data_received", siis peaksime konsooli väljastama teksti "data_received".
  4. Lõpuks on meil sündmuse käsitsi käivitamine, kasutades funktsiooni eventEmiter.emit. See käivitab sündmuse data_received.

Programmi käivitamisel saadetakse tekst "andmed vastu võetud" konsoolile, nagu allpool näidatud.

Sündmuste levitamine

Sündmuste määratlemisel on sündmuste jaoks erinevaid meetodeid, mida saab kasutada. See teema keskendub igaühe üksikasjalikule vaatamisele.

  1. Ühekordsed ürituste korraldajad

Mõnikord võib tekkida huvi reageerida sündmusele ainult esimesel korral. Nendes olukordades saate kasutada meetodit Once ().

Vaatame, kuidas saame sündmuste käitlejate jaoks kasutada meetodit üks kord.

Koodi selgitus: -

  1. Siin kasutame meetodit "üks kord", et sündmuse "data_received" korral tuleks tagasihelistamisfunktsioon käivitada ainult üks kord.
  2. Siin käivitame sündmuse 'data_received' käsitsi.
  3. Kui 'data_received' sündmus uuesti käivitatakse, ei juhtu seekord midagi. Selle põhjuseks on esimene samm, kus me ütlesime, et sündmuse võib käivitada ainult üks kord.

Kui kood on õigesti täidetud, saab logi väljundiks 'data_r onnistived'. Seda teadet kuvatakse konsoolis ainult üks kord.

  1. Ürituste kuulajate kontrollimine

Sündmuse tekitajal võib oma elu igal ajal olla null või rohkem kuulajat. Iga sündmusetüübi kuulajaid saab kontrollida mitmel viisil.

Kui olete huvitatud ainult manustatud kuulajate arvu määramisest, siis ärge otsige meetodit EventEmitter.listenerCount ().

( Märkus. Kuulajad on olulised, kuna põhiprogramm peaks teadma, kas kuulajaid lisatakse sündmusele lennult, muidu töötab programm valesti, kuna kutsutakse täiendavaid kuulajaid.)

Koodi selgitus: -

  1. Määratleme sündmuse saatja tüübi, mis on vajalik sündmusega seotud meetodite kasutamiseks.
  2. Seejärel määratleme objekti nimega emitter, mida kasutatakse meie sündmuste käitlejate määratlemiseks.
  3. Loome 2 ürituste haldurit, kes põhimõtteliselt midagi ei tee. Meie näite jaoks on see lihtne, et lihtsalt näidata, kuidas meetod kuulajaCount töötab.
  4. Nüüd, kui kutsute meie data_received sündmusele meetodi listenerCount, saadab see konsoolilogis selle sündmusega seotud sündmuste kuulajate arvu.

Kui kood on õigesti täidetud, kuvatakse konsoolilogis väärtus 2.

  1. NewListeneri sündmus

Iga kord, kui registreeritakse uus sündmusekäitleja, väljastab sündmuse väljastaja uue loendi loendi. Seda sündmust kasutatakse uute sündmuste käitlejate tuvastamiseks. Tavaliselt kasutate sündmust newListener, kui peate eraldama ressursse või sooritama mõne uue sündmuse käitleja jaoks mõne toimingu.

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

Koodi selgitus: -

  1. Loome sündmuse 'newListener' jaoks uue sündmuste käitleja. Nii et kui registreeritakse uus sündmuste käitleja, kuvatakse konsoolis tekst "Lisatud kuulaja" + sündmuse nimi.
  2. Kirjutame siin konsoolile teksti "Lisatud kuulaja" + iga registreeritud sündmuse sündmuse nimi.
  3. Määratleme oma sündmuse 'data_received' jaoks 2 sündmusekäitlejat.

Kui ülaltoodud kood on õigesti täidetud, kuvatakse konsoolis allpool olevat teksti. See lihtsalt näitab, et sündmuse „newListener” käitleja käivitati kaks korda.

Lisatud sündmuste data_received kuulaja

Lisatud sündmuste data_received kuulaja

Kokkuvõte

  • Vooge kasutatakse Node.js-is sisend-väljundseadmetest andmete lugemiseks ja kirjutamiseks. Node.js kasutab failide loetavate ja kirjutatavate voogude loomiseks teeki 'fs'. Neid vooge saab kasutada failidest andmete lugemiseks ja kirjutamiseks.
  • Torusid saab kasutada mitme voo ühendamiseks. Üks levinumaid näiteid on lugemis- ja kirjutamisvoo ühendamine andmete edastamiseks ühest failist teise.
  • Node.js on sageli märgistatud ka sündmustepõhiseks raamistikuks ning sündmusi on Node.js-s väga lihtne määratleda. Nendele sündmustele reageerivaid funktsioone saab määratleda.
  • Sündmused näitavad ka võtmesündmustele reageerimise meetodeid. Näiteks oleme näinud korra () sündmuste käitlejat, mille abil saab veenduda, et tagasihelistusfunktsioon käivitatakse ainult üks kord, kui sündmus käivitatakse.