A Node erőteljes eseményvezérelt architektúrája az egyik legerősebb előnye.

Kulcs elvitelek

  • Az eseményvezérelt programozás jó választás az interaktív alkalmazásokhoz, különösen a GUI-alkalmazásokhoz, mivel lehetővé teszi a kód számára, hogy bármilyen sorrendben válaszoljon a felhasználói műveletekre.
  • Az eseményvezérelt programozást gyakran használják a webalkalmazásokban, ahol az eseményfigyelők aktiválódnak, amikor a felhasználók interakcióba lépnek a DOM-mal.
  • Az eseményvezérelt programozás megvalósítása a Node.js-ben egyszerű az EventEmitter osztállyal, amely lehetővé teszi egyéni események létrehozását és eseményfigyelők csatolását a kezelésükhöz.

Bármely szoftveralkalmazás elkészítésekor az egyik döntő döntés a megfelelő paradigma kiválasztása a kódhoz.

Az eseményvezérelt programozás jó választás olyan interaktív alkalmazásokhoz, amelyek bármilyen sorrendben reagálnak a felhasználói műveletekre. Ez egy népszerűbb paradigma a GUI-alkalmazásoknál, mint a parancssori programoknál vagy a beágyazott rendszerkódoknál.

instagram viewer

Mik azok az események?

Az eseményre úgy gondolhat, mint egy olyan műveletre vagy eseményre, amelyet a kód felismer, és reagál rá. A rendszer vagy egy felhasználó indíthat eseményt, és a kódja általában regisztrál egy funkciót annak kezelésére.

Példa egy alapeseményre, ha egy gombra kattintunk egy adott művelet végrehajtásához. A gombra kattintás egy eseményt indít el, és a kattintáskor lefutó függvény neve a eseményhallgató (vagy kezelő).

Mi az az eseményvezérelt programozás?

Az eseményvezérelt programozás a programozási paradigma amelyekben egy alkalmazás végrehajtási folyamata a bekövetkező eseményektől függ, nem pedig szigorúan egymás után.

Ezt a paradigmát leggyakrabban felhasználói felületek és valós idejű alkalmazások építésekor használják, ahol egy eseménynek, például egy felhasználói műveletnek egy műveletet kell kiváltania a rendszerben.

A paradigma nagyon népszerű webalkalmazások készítésekor, ahol az eseményfigyelők aktiválódnak, amikor a felhasználók interakcióba lépnek a dokumentum objektum modell (DOM).

A következő kép azt szemlélteti, hogyan működik a folyamat az eseményvezérelt programozásban. Amikor egy esemény bekövetkezik, az eseménycsatorna fogadja azt, és továbbítja a megfelelő figyelőnek, hogy kezelje:

Eseményvezérelt programozás a Node.js-ben

A JavaScript eseményhurok a Node.js futtatókörnyezet aszinkron jellege mögött meghúzódó egyik alapvető koncepció. Az eseményvezérelt architektúra a beépítettségét használja EventEmitter modul a zökkenőmentes végrehajtás megkönnyítése érdekében.

Az eseményvezérelt programozással a Node.js segítségével szerveroldali alkalmazásokat hozhat létre, amelyek képesek kezelni a felhasználói interakciót, az I/O műveleteket és a valós idejű adatfeldolgozást. Ez nem blokkoló módon történik, ami jobb teljesítményt és gördülékenyebb felhasználói élményt eredményez.

Az eseményvezérelt programozás megvalósítása a Node.js-ben egyszerű, ha ismeri az események meghatározásának, kiváltásának és kezelésének alapjait.

Az EventEmitter osztály

A... val EventEmitter osztályban a Node.js-ben, egyéni eseményeket hozhat létre, és eseményfigyelőket csatolhat a kezelésükhöz. Az osztály használatához a kódban importálja azt a eseményeket ilyen modul:

// CommonJS
const { EventEmitter } = require("events")

// ES6
import { EventEmitter } from"events"

Az osztály és a tagfüggvényei ezután elérhetőek az alkalmazásban való használatra. Az események kibocsátásának és kezelésének megkezdéséhez inicializáljon egy új példányt a EventEmitter osztály.

Például:

const FoodEvents = new EventEmitter()

Ez létrehoz egy új emitter objektumot, az úgynevezett FoodEvents amely eseményeket bocsát ki és hallgatókat regisztrál. Az EventEmmitter osztály három módszert kínál egy esemény meghallgatására: tovább, addListener, és egyszer.

A tovább metódus a legalapvetőbb funkció az eseményfigyelők hozzáadásához, és addListener pontosan ugyanúgy működik. Mindkettő elfogadja az esemény nevét és a visszahívási függvényt argumentumként. A visszahívás a tényleges kezelői funkció. Te tudod használni tovább és addListener felcserélhetően.

Így kezelheti az eseményt a tovább módszer:

FoodEvents.on("cookie_ready", (data) => {
console.log("Cookie ready for packaging, data received: ", data);
})

Használata addListener közvetlen alternatívájaként tovább:

FoodEvents.addListener("cookie_ready", (data) => {
console.log(
"Cookie will now be packaged and sent out, data received: ",
data
);
})

Mindkét példa hozzáadja a visszahívást az eseményfigyelők tömbjéhez cookie_ready esemény. Ha mindkettőt használja, akkor a visszahívásaik sorrendben aktiválódnak.

A egyszer metódus regisztrál egy egyszeri eseményfigyelőt, amely az esemény következő aktiválásakor fut le. Ezt követően a rendszer eltávolítja a hallgatók tömbjéből.

Íme, hogyan kell használni egyszer egyszeri esemény kezeléséhez:

FoodEvents.once("cookie_sent", (data) => {
console.log("Cookie is sent out, data received: ", data);
})

Ebben az esetben az adó csak a cookie_sent eseményt egyszer, és távolítsa el a kezelőt, miután lefutott.

Mindhárom módszer visszaadja az emittert, így bármelyikhez láncolhatja a hívásokat.

Ne felejtse el, hogy ahhoz, hogy a hallgató kezelni tudjon egy eseményt, az alkalmazásnak valamikor ki kell adnia az eseményt. Íme néhány mintakód a kibocsátáshoz cookie_ready esemény segítségével kibocsát módszer:

functionbakeCookie() {
console.log("Cookie is baking, almost ready...")

setTimeout(() => {
FoodEvents.emit("cookie_ready", { flavor: "vanilla cookie" })
}, 3000)
}

bakeCookie()

Amikor lefuttatja ezt a kódot, amely figyelmeztetést nyomtat a konzolra, hogy a süti sül, vár 3 másodpercet, és kiadja a cookie_ready esemény esetén az alábbi képhez hasonló kimenetet kap:

Ez bemutatja, hogyan futnak az eseményfigyelők a regisztrációs sorrendben.

A EventEmitter osztály további metódusokat kínál, többek között:

  • RemoveListener: Eltávolítja a figyelő egy példányát az eseményfigyelők tömbjéből. A ki módszer is rendelkezésre áll erre a célra.
  • prependListener: Ez a metódus egy figyelőt is regisztrál, de ahelyett, hogy a hallgatók tömb végéhez adná, az elejéhez adja. Ezután minden olyan hallgató előtt fut, amelyet esetleg már regisztrált.
  • prependOnceListener: Ez ugyanúgy működik, mint a prependListener, de a hallgató csak egyszer fut le, mint például a egyszer.
  • RemoveAllListeners: Ez a funkció eltávolítja az összes regisztrált figyelőt egy adott megnevezett eseményhez, vagy az összes hallgatót, ha nem adsz át argumentumot.
  • hallgatók: Az argumentumként átadott eseménynév hallgatóinak tömbjét adja vissza.
  • eseménynevek: Ezzel a funkcióval lekérheti az összes esemény nevét, amelyhez már regisztrált figyelőt.
  • setMaxListeners: A Node.js alapértelmezés szerint figyelmeztetést ad, ha 10-nél több figyelőt regisztrál egy eseményhez, hogy megakadályozza a memóriaszivárgást. Ezt az alapértelmezett értéket a setMaxListeners segítségével állíthatja be. Ezt az értéket a segítségével is ellenőrizheti getMaxListeners.

A eseményeket csomag átfogó funkcionalitást biztosít a Node.js eseményvezérelt programozásához.

Melyek az eseményvezérelt programozás bevált gyakorlatai?

Minden programozási megközelítésnek megvannak a maga kompromisszumai, és a bevált gyakorlatok figyelmen kívül hagyása káros hatással lehet az alkalmazásra. Az alábbiakban felsorolunk néhány bevált gyakorlatot, amelyeket figyelembe kell venni az eseményvezérelt alkalmazások létrehozásakor:

  • Tiszta és karbantartható kódbázis létrehozása érdekében használjon tömör és leíró jellegű eseményeket.
  • Alkalmazzon jó hibakezelési és naplózási gyakorlatokat, hogy lehetővé tegye a hibák egyszerű hibakeresését.
  • Kerülje el a visszahívási poklot (több visszahívás beágyazását), amikor eseményfigyelőket ír. Használjon helyette JavaScript ígéreteket.
  • Ne hozzon létre túl sok hallgatót egy eseményhez. Fontolja meg az események felosztását és láncolását.

Alkalmazások létrehozása a megfelelő architektúrával

Az épületszoftverekre vonatkozó általános szabály a megfelelő építészeti és tervezési döntések meghozatala. Ha rossz megközelítést alkalmaz egy alkalmazás létrehozásához, akkor végül szembe kell néznie a következményekkel.

Az eseményvezérelt programozás olyan paradigma, amely jelentős hatással lehet az alkalmazás architektúrájára és teljesítményére. Amikor az alkalmazás vagy annak egy része eseményektől függ, hogy működjön, fontolja meg az eseményvezérelt programozást.