Ebben az oktatóanyagban megtanulja
- Fájlfolyam a Node.js fájlban
- Cső a Node.js fájlban
- Események a Node.js fájlban
- Események kibocsátása
Fájlfolyam a Node.js fájlban
A Node széles körben használja az adatfolyamokat adatátviteli mechanizmusként.
Például, amikor bármit kiad a konzolnak a console.log funkció használatával, akkor egy adatfolyamot használ az adatok küldésére a konzolra.
A Node.js képes adatfolyamot is továbbítani fájlokból, hogy azok megfelelően olvashatók és írhatók legyenek. Most megvizsgálunk egy példát arra, hogyan használhatjuk a folyamokat fájlokból történő olvasásra és írásra. Ennek a példának az alábbi lépéseit kell követnünk
1. lépés: Hozzon létre egy data.txt nevű fájlt, amely az alábbi adatokkal rendelkezik. Tegyük fel, hogy ez a fájl a helyi gépünk D meghajtóján van tárolva.
Oktatóanyag a Node.js webhelyen
Bevezetés
Események
Generátorok
Adatkapcsolat
Jázmin használatával
2. lépés: Írja be a megfelelő kódot, amely adatfolyamokat fog használni a fájl adatainak kiolvasásához.
var fs = require("fs");var stream;stream = fs.createReadStream("D://data.txt");stream.on("data", function(data) {var chunk = data.toString();console.log(chunk);});
Kód Magyarázat: -
- Először bele kell foglalnunk az 'fs' modulokat, amelyek tartalmazzák a streamek létrehozásához szükséges összes funkciót.
- Ezután létrehozunk egy olvasható adatfolyamot a - createReadStream módszerrel. Inputként megadjuk a data.txt fájlunk helyét.
- A steam.on függvény eseménykezelő, és ebben az első paramétert 'adatként' adjuk meg. Ez azt jelenti, hogy valahányszor adat érkezik a fájl adatfolyamába, hajtson végre visszahívási funkciót. Esetünkben meghatározunk egy visszahívási funkciót, amely 2 alapvető lépést fog végrehajtani. Az első a fájlból olvasott adatok konvertálása karakterláncként. A második az lenne, ha az átalakított karakterláncot kimenetként elküldenénk a konzolra.
- Minden adatmennyiséget elveszünk, amelyet leolvasunk az adatfolyamból, és átalakítjuk karakterláncokká.
- Végül minden egyes konvertált darab kimenetét elküldjük a konzolnak.
Kimenet:
- Ha a kód megfelelően van végrehajtva, akkor a fenti kimenetet látja a konzolon. Ez a kimenet ugyanaz lesz, mint a data.txt fájlban.
Írás fájlba
Ugyanúgy, ahogy létrehozunk egy olvasási folyamot, létrehozhatunk egy írási folyamot is, hogy adatokat írjunk egy fájlba. Először hozzunk létre egy üres fájlt tartalom nélkül, az úgynevezett data.txt fájlnak. Tegyük fel, hogy ez a fájl a számítógépünk D meghajtójába kerül.
Az alábbi kód megmutatja, hogyan írhatunk adatokat a fájlba.
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")
Kód Magyarázat: -
- Írható adatfolyamot hozunk létre a - createWriteStream módszerrel. Inputként megadjuk a data.txt fájlunk helyét.
- Ezután a stream.write metódust használtuk a szöveg különböző sorainak beírására a szöveges fájlunkba. A folyam gondoskodik az adatoknak az data.txt fájlba történő írásáról.
Ha megnyitja a data.txt fájlt, akkor a következő adatokat fogja látni a fájlban
Oktatóanyag a Node.js webhelyen
Bevezetés
Események
Generátorok
Adatkapcsolat
Jázmin használatával
Cső a Node.js fájlban
A Node alkalmazásokon belül a streameket a pipe () módszerrel lehet összekötni, amely két argumentumot tartalmaz:
- Kötelező írható adatfolyam, amely az adatok és a célállomásként működik
- Opcionális objektum, amelyet az opciók átadásához használnak.
Tipikus példa a csövek használatára, ha adatokat szeretne átvinni egyik fájlból a másikba.
Tehát nézzünk meg egy példát arra, hogyan lehet adatokat átvinni egyik fájlból a másikba csövek segítségével.
1. lépés: Hozzon létre egy datainput.txt nevű fájlt, amely az alábbi adatokkal rendelkezik. Tegyük fel, hogy ez a fájl a helyi gépünk D meghajtóján van tárolva.
Oktatóanyag a Node.js webhelyen
Bevezetés
Események
Generátorok
Adatkapcsolat
Jázmin használatával
2. lépés: Hozzon létre egy üres üres fájlt, a dataOutput.txt nevet, és helyezze a helyi gép D meghajtójára.
3. lépés: Írja be az alábbi kódot az adatok átviteléhez a datainput.txt fájlból a dataOutput.txt fájlba.
var fs = require("fs");var readStream = fs.createReadStream("D://datainput.txt");var writeStream = fs.createWriteStream("D://dataOutput.txt");readStream.pipe(writeStream);
Kód Magyarázat: -
- Először létrehozunk egy "readstream" fájlt a datainput.txt fájlunkba, amely minden adatot tartalmaz, amelyet át kell vinni az új fájlba.
- Ezután létre kell hoznunk egy "writestream" fájlt a dataOutput.txt fájlunkba, amely az üres fájlunk, és az adatátvitel célpontja a datainput.txt fájlból.
- Ezután a pipe paranccsal továbbítjuk az adatokat az olvasási folyamatból az írási adatfolyamba. A pipe parancs az összes adatmennyiséget, amely az olvasási folyamatba kerül, elveszi az írási adatfolyamhoz.
Ha most megnyitja a dataOutput.txt fájlt, meglátja az összes adatot, amely a datainput.txt fájlban volt.
Események a Node.js fájlban
Az események a Node.js egyik kulcsfontosságú fogalma, és néha a Node.js-t eseményvezérelt keretrendszerként emlegetik.
Alapvetően egy esemény történik. Például, ha kapcsolat létesül egy adatbázissal, akkor az adatbázis-kapcsolat esemény bekapcsol. Az eseményvezérelt programozás célja olyan funkciók létrehozása, amelyek bizonyos események kiváltásakor aktiválódnak.
Nézzünk meg egy alapvető példát egy esemény definiálására a Node.js fájlban.
Létrehozunk egy 'data_received' nevű eseményt. Amikor ez az esemény elindul, az "adatok beérkeztek" szöveget elküldjük a konzolnak.
var events = require('events');var eventEmitter = new events.EventEmitter();eventEmitter.on('data_received', function() {console.log('data received succesfully.');});eventEmitter.emit('data_received');
Kód Magyarázat: -
- Használja a szükséges funkciót az „események” modul felvételéhez. Ezzel a modullal eseményeket hozhat létre a Node.js fájlban.
- Hozzon létre egy új eseménykibocsátót. Ez arra az eseményre vonatkozik, amelyet esetünkben "data_received" egy visszahívási függvényhez kötünk, amelyet a 3. lépésben definiálunk.
- Meghatározunk egy eseményvezérelt függvényt, amely azt mondja, hogy ha az "data_received" esemény elindul, akkor a "data_received" szöveget kell kiadnunk a konzolra.
- Végül van egy eseményünk kézi kiváltója az eventEmiter.emit függvény használatával. Ez kiváltja a data_received eseményt.
A program futtatásakor az "átvett adatok" szöveget elküldjük a konzolnak az alábbiak szerint.
Események kibocsátása
Az események definiálásakor különböző módszerek létezhetnek az eseményekre, amelyekre hivatkozni lehet. Ez a téma arra összpontosít, hogy mindegyiket részletesen megvizsgálja.
- Egyszeri eseménykezelők
Néha érdekelheti, hogy egy eseményre csak az első alkalommal reagáljon. Ezekben a helyzetekben használhatja az egyszer () metódust.
Lássuk, hogyan használhatjuk az egyszeri módszert az eseménykezelők számára.
Kód Magyarázat: -
- Itt az 'egyszer' metódust használjuk annak kijelentésére, hogy az 'data_received' eseményhez a visszahívási funkciót csak egyszer szabad végrehajtani.
- Itt manuálisan kiváltjuk az 'data_received' eseményt.
- Amikor az 'data_received' esemény újra elindul, ezúttal semmi sem fog történni. Ennek oka az első lépés, ahol azt mondtuk, hogy az esemény csak egyszer váltható be.
Ha a kódot megfelelően hajtják végre, a napló kimenete 'sikeresen fogadott'. Ez az üzenet csak egyszer jelenik meg a konzolon.
- Az eseményhallgatók ellenőrzése
Életének bármely szakaszában egy eseménykibocsátóhoz nulla vagy több hallgató kapcsolódhat. Az egyes eseménytípusok hallgatóit többféle módon lehet ellenőrizni.
Ha csak a csatolt hallgatók számának meghatározása érdekel, akkor ne keresse tovább az EventEmitter.listenerCount () metódust.
( Megjegyzés: A hallgatók azért fontosak, mert a fő programnak tudnia kell, hogy a hallgatók menet közben vannak-e hozzáadva egy eseményhez, különben a program hibásan működik, mert további hallgatók hívnak.)
Kód Magyarázat: -
- Meghatározzuk az eventEmitter típust, amely az eseményhez kapcsolódó módszerek használatához szükséges.
- Ezután definiálunk egy emitter nevű objektumot, amely az eseménykezelők megadására szolgál.
- 2 eseménykezelőt hozunk létre, amelyek alapvetően nem csinálnak semmit. Ezt a példánkban egyszerűen meg kell tartani, csak hogy bemutassuk, hogyan működik a listenerCount módszer.
- Most, amikor a data_received eseményünkön meghívja a listenerCount metódust, elküldi az eseményhez csatolt eseményhallgatók számát a konzolnaplóban.
Ha a kódot megfelelően hajtják végre, akkor a 2 értéke megjelenik a konzol naplójában.
- Az újListener Event
Minden alkalommal, amikor új eseménykezelőt regisztrálnak, az eseménykibocsátó újListener eseményt bocsát ki. Ez az esemény új eseménykezelők felderítésére szolgál. Ön általában akkor használja az newListener eseményt, ha erőforrásokat kell elosztania vagy valamilyen műveletet végre kell hajtania minden új eseménykezelőhöz.
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() {});
Kód Magyarázat: -
- Új eseménykezelőt hozunk létre az 'newListener' eseményhez. Tehát, amikor új eseménykezelőt regisztrálnak, a "Hozzáadott figyelő" szöveg + az esemény neve megjelenik a konzolon.
- Itt írjuk a konzolra a "Hozzáadott figyelő" szöveget + az esemény nevét minden regisztrált eseményhez.
- 2 eseménykezelőt határozunk meg az 'data_received' eseményünkhöz.
Ha a fenti kódot megfelelően hajtják végre, az alábbi szöveg megjelenik a konzolon. Ez csak azt mutatja, hogy az "newListener" eseménykezelőt kétszer indították el.
Hozzáadott figyelő a data_received eseményekhez
Hozzáadott figyelő a data_received eseményekhez
Összegzés
- Az adatfolyamokat a Node.js a be- és kimeneti eszközök adatainak olvasására és írására használja. A Node.js az 'fs' könyvtár segítségével olvasható és írható adatfolyamokat hoz létre fájlokba. Ezekkel a folyamokkal fájlokból származó adatok olvashatók és írhatók.
- A csövek felhasználhatók több adatfolyam összekapcsolására. Az egyik leggyakoribb példa az olvasási és írási adatfolyam összekapcsolása az adatok egyik fájlból a másikba történő átviteléhez.
- A Node.js-t gyakran eseményvezérelt keretrendszerként is címkézik, és nagyon könnyű meghatározni az eseményeket a Node.js fájlban. Megadhatók olyan funkciók, amelyek reagálnak ezekre az eseményekre.
- Az események a kulcsfontosságú eseményekre reagálási módszereket is bemutatnak. Például láttuk az egyszer () eseménykezelőt, amellyel megbizonyosodhatunk arról, hogy egy visszahívási funkció csak egyszer kerül végrehajtásra, amikor egy esemény elindul.