Šajā apmācībā jūs uzzināsiet
- Faila straume vietnē Node.js
- Caurules Node.js
- Notikumi vietnē Node.js
- Notikumu izstarošana
Faila straume vietnē Node.js
Node plaši izmanto straumes kā datu pārsūtīšanas mehānismu.
Piemēram, kad kaut ko izvadāt uz konsoli, izmantojot funkciju console.log, jūs faktiski izmantojat straumi, lai datus nosūtītu uz konsoli.
Node.js ir arī iespēja straumēt datus no failiem, lai tos varētu pareizi lasīt un rakstīt. Tagad mēs aplūkosim piemēru, kā mēs varam izmantot straumes, lai lasītu un rakstītu no failiem. Šajā piemērā mums ir jāseko tālāk minētajām darbībām
1. solis) Izveidojiet failu ar nosaukumu data.txt, kuram ir tālāk norādītie dati. Pieņemsim, ka šis fails ir saglabāts mūsu vietējās mašīnas D diskā.
Apmācība vietnē Node.js
Ievads
Notikumi
Ģeneratori
Datu savienojamība
Jasmīna lietošana
2. solis. Uzrakstiet attiecīgo kodu, kas izmantos plūsmas, lai nolasītu datus no faila.
var fs = require("fs");var stream;stream = fs.createReadStream("D://data.txt");stream.on("data", function(data) {var chunk = data.toString();console.log(chunk);});
Koda skaidrojums: -
- Vispirms mums jāiekļauj 'fs' moduļi, kas satur visu straumju izveidošanai nepieciešamo funkcionalitāti.
- Tālāk mēs izveidojam lasāmu straumi, izmantojot metodi - createReadStream. Kā ievadi mēs norādām faila data.txt atrašanās vietu.
- Funkcija steam.on ir notikumu apstrādātājs, un tajā mēs pirmo parametru norādām kā “dati”. Tas nozīmē, ka ikreiz, kad dati nonāk faila straumē, izpildiet atzvanīšanas funkciju. Mūsu gadījumā mēs definējam atzvanīšanas funkciju, kas veiks 2 pamata darbības. Pirmais ir konvertēt no faila nolasītos datus kā virkni. Otrais būtu nosūtīt pārveidoto virkni kā izvadi uz konsoli.
- Mēs ņemam katru datu daļu, kas tiek nolasīta no datu straumes, un pārveidojam to par virkni.
- Visbeidzot, mēs nosūtām katras virknes pārveidotās daļas izvadi uz konsoli.
Izeja:
- Ja kods ir izpildīts pareizi, iepriekš redzamā izeja būs redzama konsolē. Šī izeja būs tāda pati kā failā data.txt.
Rakstīšana failā
Tādā pašā veidā, kā mēs izveidojam lasīšanas straumi, mēs varam izveidot arī rakstīšanas plūsmu, lai ierakstītu datus failā. Vispirms izveidosim tukšu failu bez satura ar nosaukumu data.txt. Pieņemsim, ka šis fails ir ievietots mūsu datora D diskā.
Zemāk redzamais kods parāda, kā mēs varam ierakstīt datus 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")
Koda skaidrojums: -
- Mēs veidojam ierakstāmu straumi, izmantojot metodi - createWriteStream. Kā ievadi mēs norādām faila data.txt atrašanās vietu.
- Tālāk mēs izmantojām metodi stream.write, lai rakstītu dažādas teksta rindas mūsu teksta failā. Straume rūpēsies par šo datu ierakstīšanu failā data.txt.
Atverot failu data.txt, failā tagad būs redzami šādi dati
Apmācība vietnē Node.js
Ievads
Notikumi
Ģeneratori
Datu savienojamība
Jasmīna lietošana
Caurules Node.js
Mezglu lietojumprogrammās plūsmas var savienot kopā, izmantojot metodi pipe (), kurai nepieciešami divi argumenti:
- Obligāta rakstāma straume, kas darbojas kā datu galamērķis un
- Neobligāts objekts, ko izmanto opciju nodošanai.
Tipisks cauruļu izmantošanas piemērs, ja vēlaties pārsūtīt datus no viena faila uz otru.
Tātad, redzēsim piemēru, kā mēs varam pārvietot datus no viena faila uz otru, izmantojot caurules.
1. solis) Izveidojiet failu ar nosaukumu datainput.txt, kuram ir tālāk norādītie dati. Pieņemsim, ka šis fails ir saglabāts mūsu vietējās mašīnas D diskā.
Apmācība vietnē Node.js
Ievads
Notikumi
Ģeneratori
Datu savienojamība
Jasmīna lietošana
2. solis) Izveidojiet tukšu tukšu failu ar nosaukumu dataOutput.txt un ievietojiet to vietējās mašīnas D diskā.
3. solis. Uzrakstiet zemāk esošo kodu, lai veiktu datu pārsūtīšanu no datainput.txt faila uz dataOutput.txt failu.
var fs = require("fs");var readStream = fs.createReadStream("D://datainput.txt");var writeStream = fs.createWriteStream("D://dataOutput.txt");readStream.pipe(writeStream);
Koda skaidrojums: -
- Vispirms mēs izveidojam failu “datainput.txt” “readstream”, kurā ir visi mūsu dati, kas jāpārsūta uz jauno failu.
- Pēc tam mums ir jāizveido "writestream" failam dataOutput.txt, kas ir mūsu tukšais fails un ir datu pārsūtīšanas galamērķis no datainput.txt faila.
- Pēc tam mēs izmantojam komandu pipe, lai pārsūtītu datus no readstream uz rakstīšanas plūsmu. Pipe komanda uzņems visus datus, kas nonāk lasīšanas straumē, un virzīs tos uz rakstīšanas straumi.
Ja tagad atvērsit failu dataOutput.txt, tiks parādīti visi dati, kas bija failā datainput.txt.
Notikumi vietnē Node.js
Notikumi ir viens no galvenajiem jēdzieniem vietnē Node.js, un dažreiz Node.js tiek dēvēts par notikumu virzītu ietvaru.
Būtībā notikums ir kaut kas, kas notiek. Piemēram, ja ir izveidots savienojums ar datu bāzi, tiek aktivizēts datu bāzes savienojuma notikums. Programmējot uz notikumiem, ir jāizveido funkcijas, kas tiks aktivizētas, kad tiks aktivizēti konkrēti notikumi.
Apskatīsim pamata piemēru notikuma definēšanai vietnē Node.js.
Mēs gatavojamies izveidot notikumu ar nosaukumu 'data_received'. Kad šis notikums tiek aktivizēts, teksts "dati saņemti" tiks nosūtīts uz konsoli.
var events = require('events');var eventEmitter = new events.EventEmitter();eventEmitter.on('data_received', function() {console.log('data received succesfully.');});eventEmitter.emit('data_received');
Koda skaidrojums: -
- Izmantojiet funkciju pieprasīt, lai iekļautu moduli “notikumi”. Izmantojot šo moduli, jūs varēsiet izveidot notikumus vietnē Node.js.
- Izveidojiet jaunu notikumu izstarotāju. To izmanto, lai saistītu notikumu, kas mūsu gadījumā ir "data_received" ar atzvanīšanas funkciju, kas definēta 3. solī.
- Mēs definējam notikumu virzītu funkciju, kurā teikts, ka gadījumā, ja tiek aktivizēts notikums "data_received", konsolē mums jāizvada teksts "data_received".
- Visbeidzot, mums ir manuāls notikuma aktivizētājs, izmantojot funkciju eventEmiter.emit. Tas aktivizēs notikumu data_received.
Kad programma ir palaista, teksts "saņemtie dati" tiks nosūtīts uz konsoli, kā parādīts zemāk.
Notikumu izstarošana
Nosakot notikumus, notikumiem var izmantot dažādas metodes. Šī tēma ir vērsta uz to, lai detalizēti aplūkotu katru no tiem.
- Vienu reizi rīkotāji
Dažreiz jums var būt interese reaģēt uz notikumu tikai pirmo reizi, kad tas notiek. Šādās situācijās varat izmantot metodi vienreiz ().
Apskatīsim, kā mēs varam izmantot vienreizējo metodi pasākumu apstrādātājiem.
Koda skaidrojums: -
- Šeit mēs izmantojam metodi "vienreiz", lai teiktu, ka notikumam "data_received" atzvanīšanas funkcija jāizpilda tikai vienu reizi.
- Šeit mēs manuāli aktivizējam notikumu 'data_received'.
- Kad atkal tiks aktivizēts notikums 'data_received', šoreiz nekas nenotiks. Tas notiek pirmā soļa dēļ, kur mēs teicām, ka notikumu var izraisīt tikai vienu reizi.
Ja kods ir izpildīts pareizi, žurnāla izvade tiks “veiksmīgi saņemta ar datiem”. Šis ziņojums konsolē tiks parādīts tikai vienu reizi.
- Notikumu klausītāju pārbaude
Jebkurā dzīves laikā notikumu izstarotājam var būt pievienots nulle vai vairāk klausītāju. Klausītājus katram pasākuma veidam var pārbaudīt vairākos veidos.
Ja jūs interesē tikai piesaistīto klausītāju skaita noteikšana, tad nemeklējiet metodi EventEmitter.listenerCount ().
( Piezīme. Klausītājiem ir liela nozīme, jo galvenajai programmai ir jāzina, vai klausītāji tiek pievienoti lidojuma laikā, citādi programma nedarbosies, jo tiks izsaukti papildu klausītāji.)
Koda skaidrojums: -
- Mēs definējam eventEmitter tipu, kas nepieciešams, lai izmantotu ar notikumu saistītas metodes.
- Pēc tam mēs definējam objektu, ko sauc par izstarotāju, kas tiks izmantots, lai definētu mūsu notikumu apstrādātājus.
- Mēs izveidojam 2 pasākumu apstrādātājus, kuri būtībā neko nedara. Mūsu piemēram tas ir vienkārši, lai parādītu, kā darbojas metode “listenerCount”.
- Tagad, kad mūsu data_received notikumā izmantojat metodi listenerCount, tā konsoles žurnālā nosūtīs šim notikumam pievienoto notikumu klausītāju skaitu.
Ja kods ir izpildīts pareizi, 2 vērtība tiks parādīta konsoles žurnālā.
- NewListener notikums
Katru reizi, kad tiek reģistrēts jauns notikumu apstrādātājs, notikumu izstarotājs izstaro newListener notikumu. Šis notikums tiek izmantots, lai atklātu jaunus notikumu apstrādātājus. Jūs parasti izmantojat newListener notikumu, kad jums jāpiešķir resursi vai jāveic kāda darbība katram jaunam notikumu apstrādātājam.
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() {});
Koda skaidrojums: -
- Mēs izveidojam jaunu notikumu apstrādātāju notikumam 'newListener'. Tāpēc ikreiz, kad tiek reģistrēts jauns notikumu apstrādātājs, konsolē tiks parādīts teksts "Pievienots klausītājs" + notikuma nosaukums.
- Šeit mēs rakstām konsolei tekstu "Pievienots klausītājs" + notikuma nosaukums katram reģistrētajam notikumam.
- Mēs definējam 2 notikumu apstrādātājus savam pasākumam 'data_received'.
Ja iepriekš minētais kods ir izpildīts pareizi, konsolē tiks parādīts zemāk redzamais teksts. Tas tikai parāda, ka “newListener” notikumu apstrādātājs tika iedarbināts divreiz.
Pievienots klausītājs datu saņemtajiem notikumiem
Pievienots klausītājs datu saņemtajiem notikumiem
Kopsavilkums
- Straumes tiek izmantotas Node.js, lai lasītu un rakstītu datus no ievades-izvades ierīcēm. Node.js izmanto “fs” bibliotēku, lai izveidotu lasāmas un rakstāmas plūsmas uz failiem. Šīs straumes var izmantot, lai lasītu un rakstītu datus no failiem.
- Caurules var izmantot, lai savienotu vairākas straumes kopā. Viens no visizplatītākajiem piemēriem ir apvienot lasīšanas un rakstīšanas straumi datu pārsūtīšanai no viena faila uz otru.
- Node.js bieži tiek atzīmēts arī kā notikumu virzīts ietvars, un ir ļoti viegli definēt notikumus Node.js. Var definēt funkcijas, kas reaģē uz šiem notikumiem.
- Pasākumi arī atklāj metodes, kā reaģēt uz galvenajiem notikumiem. Piemēram, mēs esam redzējuši vienreizējo () notikumu apdarinātāju, kuru var izmantot, lai pārliecinātos, ka atzvanīšanas funkcija tiek izpildīta tikai vienu reizi, kad tiek aktivizēts notikums.