„Node js“ srautų mokymo programa: failų srautas, vamzdžiai

Turinys:

Anonim

Šioje pamokoje sužinosite

  • Failų srautas „Node.js“
  • Vamzdžiai „Node.js“
  • Įvykiai „Node.js“
  • Renginių skleidimas

Failų srautas „Node.js“

„Node“ plačiai naudoja srautus kaip duomenų perdavimo mechanizmą.

Pvz., Kai ką nors išvedate į konsolę naudodami „console.log“ funkciją, iš tikrųjų naudojate srautą duomenims siųsti į konsolę.

„Node.js“ taip pat turi galimybę srautu perduoti duomenis iš failų, kad juos būtų galima tinkamai perskaityti ir parašyti. Dabar mes pažvelgsime į pavyzdį, kaip mes galime naudoti srautus skaityti ir rašyti iš failų. Šiame pavyzdyje turime atlikti toliau nurodytus veiksmus

1 žingsnis) Sukurkite failą, vadinamą data.txt, kuriame yra žemiau pateikti duomenys. Tarkime, kad šis failas yra saugomas D vietiniame kompiuteryje.

Pamoka apie „Node.js“

Įvadas

Įvykiai

Generatoriai

Duomenų ryšys

Jasmine vartojimas

2 žingsnis. Parašykite atitinkamą kodą, kuris naudos srautus duomenims iš failo nuskaityti.

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

Kodo paaiškinimas: -

  1. Pirmiausia turime įtraukti „fs“ modulius, kuriuose yra visos funkcijos, reikalingos srautams kurti.
  2. Tada mes sukuriame skaitomą srautą naudodami metodą - createReadStream. Kaip įvestį nurodome failo data.txt vietą.
  3. Funkcija „steam.on“ yra įvykių apdorotojas ir joje mes nurodome pirmąjį parametrą kaip „duomenys“. Tai reiškia, kad kai tik duomenys patenka į failo srautą, tada atlikite atgalinio skambinimo funkciją. Mūsų atveju mes apibrėžiame atgalinio skambinimo funkciją, kuri atliks 2 pagrindinius veiksmus. Pirmasis yra konvertuoti iš failo perskaitytus duomenis kaip eilutę. Antrasis būtų konvertuotos eilutės siuntimas kaip išvestis į konsolę.
  4. Imame kiekvieną duomenų dalį, kuri yra nuskaityta iš duomenų srauto, ir paverčiame juos eilute.
  5. Galiausiai, mes siunčiame kiekvienos eilutės konvertuoto gabalo išvestį į konsolę.

Išvestis:

  • Jei kodas tinkamai vykdomas, konsolėje pamatysite aukščiau pateiktą išvestį. Ši išvestis bus tokia pati kaip faile data.txt.

Rašymas į bylą

Tuo pačiu būdu, kurdami skaitymo srautą, galime sukurti ir rašymo srautą, kad įrašytume duomenis į failą. Pirmiausia sukurkime tuščią failą be turinio, vadinamą data.txt. Tarkime, kad šis failas yra mūsų kompiuterio D diske.

Žemiau pateiktas kodas rodo, kaip mes galime įrašyti duomenis į 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")

Kodo paaiškinimas: -

  1. Rašomą srautą kuriame naudodami metodą - createWriteStream. Kaip įvestį nurodome failo data.txt vietą.
  2. Toliau mes naudojome „stream.write“ metodą, skirtą skirtingoms teksto eilutėms įrašyti į mūsų teksto failą. Srautas pasirūpins šių duomenų įrašymu į failą „data.txt“.

Jei atidarysite failą data.txt, dabar faile pamatysite šiuos duomenis

Pamoka apie „Node.js“

Įvadas

Įvykiai

Generatoriai

Duomenų ryšys

Jasmine vartojimas

Vamzdžiai „Node.js“

„Node“ programose srautus galima sujungti naudojant „pipe ()“ metodą, kuriam reikalingi du argumentai:

  • Reikalingas įrašomas srautas, kuris veikia kaip duomenų paskirtis ir
  • Pasirenkamas objektas, naudojamas perduoti parinktis.

Tipiškas vamzdžių naudojimo pavyzdys, jei norite perkelti duomenis iš vieno failo į kitą.

Taigi pažiūrėkime pavyzdį, kaip mes galime perkelti duomenis iš vieno failo į kitą, naudodami vamzdžius.

1 žingsnis) Sukurkite failą, vadinamą datainput.txt, kuriame yra žemiau pateikti duomenys. Tarkime, kad šis failas yra saugomas D vietiniame kompiuteryje.

Pamoka apie „Node.js“

Įvadas

Įvykiai

Generatoriai

Duomenų ryšys

Jasmine vartojimas

2 žingsnis) Sukurkite tuščią tuščią failą, vadinamą dataOutput.txt, ir įdėkite jį į vietinio kompiuterio D diską.

3 žingsnis. Parašykite žemiau esantį kodą, kad atliktumėte duomenų perkėlimą iš failo datainput.txt į failą dataOutput.txt.

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

Kodo paaiškinimas: -

  1. Pirmiausia mes kuriame „readstream“ į mūsų datainput.txt failą, kuriame yra visi mūsų duomenys, kuriuos reikia perkelti į naują failą.
  2. Tada mes turime sukurti „writestream“ į savo failą „dataOutput.txt“, kuris yra tuščias failas ir yra duomenų perdavimo iš datainput.txt failo paskirties vieta.
  3. Tada mes naudojame komandą „pipe“ duomenims iš skaitymo srauto perkelti į rašymo srautą. „Pipe“ komanda ims visus duomenis, kurie patenka į skaitymo srautą, ir perkelia juos į rašytinį srautą.

Jei dabar atidarysite failą „dataOutput.txt“, pamatysite visus duomenis, kurie buvo faile „datainput.txt“.

Įvykiai „Node.js“

Įvykiai yra viena iš pagrindinių „Node.js“ sąvokų, o kartais „Node.js“ vadinama „Event-based Framework“.

Iš esmės įvykis yra kažkas, kas vyksta. Pavyzdžiui, jei užmezgamas ryšys su duomenų baze, suaktyvinamas duomenų bazės ryšio įvykis. Įvykių programavimas yra sukurti funkcijas, kurios bus suaktyvintos, kai suveiks konkretūs įvykiai.

Pažvelkime į pagrindinį įvykio apibrėžimo pavyzdį „Node.js“.

Kursime renginį pavadinimu „data_received“. Suaktyvinus šį įvykį, tekstas „duomenys gauti“ bus išsiųstas į konsolę.

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

Kodo paaiškinimas: -

  1. Norėdami įtraukti „įvykių“ modulį, naudokite funkciją reikalauti. Naudodamiesi šiuo moduliu, galėsite kurti įvykius „Node.js“.
  2. Sukurkite naują įvykių skleidėją. Tai naudojama susieti įvykį, kuris mūsų atveju yra „data_received“ su atgalinio skambinimo funkcija, kuri yra apibrėžta 3 žingsnyje.
  3. Apibrėžiame įvykiu pagrįstą funkciją, kuri sako, kad jei suveiks įvykis „data_received“, tada turėtume išleisti tekstą „data_received“ į konsolę.
  4. Galiausiai, mes turime rankinį įvykio suveikimą naudodami „eventEmiter.emit“ funkciją. Tai suaktyvins įvykį „data_received“.

Paleidus programą, tekstas „duomenys gauti“ bus išsiųstas į konsolę, kaip parodyta žemiau.

Renginių skleidimas

Apibrėžiant įvykius yra skirtingi įvykių metodai, kuriais galima pasinaudoti. Ši tema daugiausia dėmesio skiria kiekvienam iš jų išsamiai.

  1. Vienkartiniai renginių tvarkytojai

Kartais jums gali būti įdomu reaguoti į įvykį tik pirmą kartą. Šiose situacijose galite naudoti kartą () metodą.

Pažiūrėkime, kaip mes galime panaudoti renginių tvarkytojų vieną kartą metodą.

Kodo paaiškinimas: -

  1. Čia mes naudojame „kartą“ metodą, norėdami pasakyti, kad įvykiui „data_received“ atgalinio skambinimo funkcija turėtų būti vykdoma tik vieną kartą.
  2. Čia rankiniu būdu suaktyviname įvykį „data_received“.
  3. Kai vėl bus suaktyvintas įvykis „data_received“, šį kartą nieko neįvyks. Taip yra dėl pirmojo žingsnio, kai pasakėme, kad įvykis gali būti suaktyvintas tik vieną kartą.

Jei kodas tinkamai įvykdytas, žurnalo išvestis bus „data_rivedived sikeres“. Šis pranešimas konsolėje bus rodomas tik vieną kartą.

  1. Renginių klausytojų tikrinimas

Bet kuriuo savo gyvenimo momentu įvykio skleidėjas prie jo gali prijungti nulį ar daugiau klausytojų. Kiekvieno tipo renginių klausytojus galima patikrinti keliais būdais.

Jei jus domina tik prijungtų klausytojų skaičiaus nustatymas, neieškokite metodo EventEmitter.listenerCount ().

( Pastaba: klausytojai yra svarbūs, nes pagrindinė programa turėtų žinoti, ar klausytojai yra pridedami skrendant į renginį, kitaip programa suges, nes bus pakviesti papildomi klausytojai.)

Kodo paaiškinimas: -

  1. Mes apibrėžiame „eventEmitter“ tipą, kurio reikia norint naudoti su įvykiu susijusius metodus.
  2. Tada mes apibrėžiame objektą, vadinamą spinduoliu, kuris bus naudojamas apibrėžiant mūsų įvykių tvarkytuvus.
  3. Mes kuriame 2 renginių tvarkytojus, kurie iš esmės nieko nedaro. Mūsų pavyzdyje tai paprasta, kad parodytume, kaip veikia „listenerCount“ metodas.
  4. Dabar, kai iškviečiate „listenerCount“ metodą įvykyje „data_received“, jis konsolės žurnale išsiųs prie šio įvykio pridėtų įvykių klausytojų skaičių.

Jei kodas tinkamai vykdomas, 2 reikšmė bus rodoma konsolės žurnale.

  1. „NewListener“ renginys

Kiekvieną kartą, kai užregistruojamas naujas įvykių tvarkytojas, įvykių skleidėjas skleidžia „newListener“ įvykį. Šis įvykis naudojamas naujiems įvykių tvarkytojams aptikti. Paprastai „newListener“ įvykį naudojate, kai reikia paskirstyti išteklius arba atlikti tam tikrus veiksmus kiekvienam naujam įvykių tvarkytuvui.

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

Kodo paaiškinimas: -

  1. Kuriame naują renginių „newListener“ renginį. Taigi, kai tik užregistruojamas naujas įvykių tvarkytuvas, konsolėje bus rodomas tekstas „Pridėtas klausytojas“ + įvykio pavadinimas.
  2. Čia į konsolę rašome tekstą „Pridėtas klausytojas“ + kiekvieno užregistruoto įvykio pavadinimas.
  3. Mes apibrėžiame 2 įvykių tvarkytuvus savo įvykiui „data_received“.

Jei aukščiau pateiktas kodas bus tinkamai vykdomas, žemiau esantis tekstas bus rodomas konsolėje. Tai tik parodo, kad „newListener“ įvykių tvarkytuvas buvo suaktyvintas du kartus.

Pridėtas duomenų_gautų įvykių klausytojas

Pridėtas duomenų_gautų įvykių klausytojas

Santrauka

  • Srautai naudojami „Node.js“, norint skaityti ir rašyti duomenis iš įvesties-išvesties įrenginių. „Node.js“ naudoja „fs“ biblioteką, kad sukurtų skaitomus ir įrašomus srautus į failus. Šiuos srautus galima naudoti duomenims skaityti ir rašyti iš failų.
  • Vamzdžiai gali būti naudojami sujungti kelis srautus. Vienas iš labiausiai paplitusių pavyzdžių yra skaitymo ir rašymo srautas, kad duomenys būtų perkelti iš vieno failo į kitą.
  • „Node.js“ taip pat dažnai žymimas kaip įvykių valdoma sistema, todėl „Node.js“ labai lengva apibrėžti įvykius. Galima apibrėžti funkcijas, kurios reaguoja į šiuos įvykius.
  • Įvykiai taip pat atskleidžia metodus, kaip reaguoti į pagrindinius įvykius. Pavyzdžiui, matėme kartą () įvykių tvarkytuvą, kurį galima naudoti norint įsitikinti, kad atgalinio ryšio funkcija bus vykdoma tik vieną kartą, kai suveiks įvykis.