Node.js is een runtime waarmee developers JavaScript op een server kunnen draaien in plaats van alleen in een webbrowser. Voordat Node.js in 2009 verscheen, leefde JavaScript alleen in de browser. Node.js nam dezelfde engine die Chrome aandrijft en liet die op de back-end draaien, zodat één taal beide kanten van een applicatie kon bedienen.
Een mooie manier om het voor te stellen is een druk restaurant met één heel efficiënte ober. In plaats van bij één tafel te blijven staan tot het eten klaar is, neemt de ober een bestelling op, loopt door naar de volgende tafel en komt terug zodra elk gerecht klaar is. Node.js werkt hetzelfde: het bevriest niet terwijl het op een database of een bestand wacht, maar pakt gewoon het volgende verzoek op en keert terug naar het eerste zodra dat klaar is. Die niet-blokkerende aanpak is waarom het goed overweg kan met duizenden gebruikers tegelijk. De meeste Node.js-projecten gebruiken de npm-registry om kant-en-klare bouwstenen op te halen, zodat teams geen code hoeven te herschrijven die al bestaat.
Die aanpak past bij een duidelijke set klussen. Een chat-app waar berichten meteen moeten verschijnen, een API die met een mobiele app praat, of een dienst die live dashboards voedt spelen allemaal in op de sterke kanten. Bedrijven als Netflix en PayPal verhuisden delen van hun stack mede daarom naar Node.js.
Het is geen toverdoos. Zwaar rekenwerk kan die ene ober alsnog blokkeren, dus een trage afbeeldingsbewerking of een gigantisch rapport kan elk ander verzoek laten stilstaan zolang het draait. Voor dat soort werk verschuiven teams de taak of pakken ze een andere taal. Weten waar die grens ligt, is het grootste deel van Node.js goed gebruiken.
Bij TopDevs grijpen we naar Node.js als een klant een snelle API of een realtime-functie nodig heeft, omdat één taal over de hele stack het team klein en de codebase consistent houdt.