Gebeurtenisgestuurde architectuur is ingebakken in de ontwerpprincipes van Node.js. Dit betekent dat Node.js gebruikers de mogelijkheid geeft om te reageren op bepaalde gebeurtenissen binnen een applicatie. Dit is hoe het werkt:
1. Event Loops: Node.js heeft een evenementenlus, dat is een oneindige lus die wacht op gebeurtenissen en vervolgens de callback-functies van die gebeurtenissen aanroept.
1. Event Emitter: Node.js heeft een ingebouwde module genaamd ‘events’ waarmee je objecten kunt maken die evenementen triggeren. Met de Event Emitter kan je namen geven aan bepaalde types gebeurtenissen in je applicatie.
1. Callback Functies: Wanneer een gebeurtenis wordt getriggerd, roept Node.js de callback-functies aan die aan die gebeurtenis zijn gebonden. Het voert de bijbehorende functie (of ‘event handler’) uit die de nodige code bevat om op de gebeurtenis te reageren. Deze functies worden pas uitgevoerd zodra de gebeurtenis plaatsvindt, wat betekent dat ze asynchroon werken.
1. Non-Blocking I/O: De meeste I/O-operaties in Node.js (zoals netwerkverzoeken, toegang tot de database, lezen/schrijven naar het bestandssysteem, enz.) zijn asynchroon en non-blocking. Dit betekent dat de Event Loop verder kan gaan met het afhandelen van andere gebeurtenissen terwijl hij wacht op de I/O-operatie, om voltooid te worden. Deze architectuur maakt Node.js bijzonder geschikt voor levensvatbare en schaalbare netwerktoepassingen.
Kortom, in een gebeurtenisgestuurde architectuur stelt Node.js ontwikkelaars in staat om toepassingen te bouwen die worden aangestuurd door gebeurtenissen, waarbij functies alleen worden uitgevoerd als reactie op specifieke gebeurtenissen, wat resulteert in zeer efficiënte, schaalbare en zeer snelle toepassingen.