Node.js en NPM
Node.js Open source, crossplatform runtime omgeving voor server-side javascript applicaties, primair bedoel snelle, schaalbare netwerk applicaties waar veel data in verwerkt wordt en veel gelijktijdige connecties nodig zijn. Node.js gebruikt een event-driven, non-blocking I/O model, waardoor de through-put en schaalbaarheid vergroot wordt.
Node.js Javascript op de server Google V8 javascript engine Haakt hierdoor in op server OS (luisteren poort) Library van javascript functies in modules Geen webserver meer nodig -> runtime Real-time 2 way connections ipv request-response Werkt goed samen met object DB’s (zoals MongoDB, Cassandra). 1 soort data: JSON van client naar server naar DB Meteor voor automatische communicatie tussen js op de client en op de server
Node.js Non-blocking I/O + event-driven Single thread Parallel processing wachten op callback wanneer IO klaar is. Ondertussen nieuwe verzoeken afhandelen. Traditioneel server-side vb PHP sequentieel, altijd wachten op IO. Tenzij multi-threaded, maar dat is erg complex, vertragend (context-switching) en kost veel geheugen
Node.js
Pas op voor: – nested callbacks – throwing errors tot aan de primaire event loop -> crash. Parse de errors terug naar de caller
Node.js Gebruiken voor: – Light-weight REST API – I/O heavy apps – Data intensief – Real-time systems – Single page apps met veel concurrent connecties (server side) – Streaming data
Node.js Niet gebruiken voor: – CPU heavy algoritmes en weinig IO – Type strong applicaties
Node.js Vragen: – Hoe governance op alle losse applicaties/js files? – Hoe verhoud het zich tot meer client side frameworks zoals jQuery, angular.js enz??
NPM DE package manager voor node.js updates, releases, dependency’s