Node.js is een populaire runtime-omgeving voor veel developers die aan webapplicaties werken. Node.js is gebouwd om code uit te voeren die is geschreven in JavaScript, een van de populairste programmeertalen ter wereld, en maakt het bouwen van server-side applicaties toegankelijk voor een grote gemeenschap van developers.

Node.js ondersteunt herbruikbaarheid van code middels JavaScript bibliotheken, maar het kiezen van de beste bibliotheken kan nogal een klus zijn. De juiste bibliotheken kunnen de ontwikkelingstijd versnellen en hebben een groot aantal voordelen voor je webapplicatie, zoals snellere laadtijden en een kleinere applicatiebundel.

Bij het kiezen van een bibliotheek moet je rekening houden met de complexiteit van de applicatie, de gemeenschap achter de bibliotheek, de frequentie van updates en de kwaliteit van de documentatie.

Bibliotheken in Node.js worden beheerd met de Node.js pakketbeheerder, npm, die kan helpen bij het installeren van veel open-source bibliotheken. We hebben 13 essentiële bibliotheken voor Node.js geïdentificeerd die het leven van een webdeveloper eenvoudiger maken.

Wat is Node.js?

Node.js is een open-source, server-side runtime-omgeving voor JavaScript code. Het heeft een asynchrone architectuur en cross-platform compatibiliteit, waardoor het een populaire basis is voor webdevelopment.

Node.js maakt gebruik van event-driven en non-blocking I/O, waardoor het zeer efficiënt is in real-time gedistribueerde applicaties die veel gegevens verwerken.

Wat is een Node.js bibliotheek?

Een bibliotheek of module is vooraf geschreven code die veelvoorkomende taken abstraheert. Je kunt bibliotheken gebruiken om het codeerproces te versnellen en de herbruikbaarheid van code te bevorderen, waardoor je werk “DRY” (jezelf niet herhalen) blijft.

In tegenstelling tot frameworks bevatten bibliotheken voltooide functies die je in elke fase van de ontwikkeling van een project kunt opnemen. Een framework daarentegen biedt meestal een skelet voor een hele applicatie, en heeft vaak een grote invloed op hoe die wordt gebouwd.

Node.js bibliotheken die werken (zodat jij dat minder hoeft te doen)

Laten we eens kijken naar 13 van deze Node.js bibliotheken en hun voordelen bespreken.

1. Sequelize

Sequelize is een op promises gebaseerde Node.js object-relationele mapper (ORM) tool die developers helpt om eenvoudiger met relationele databases te werken. Het ondersteunt databases zoals PostgreSQL, MySQL, MariaDB, SQLite en meer.

Met behulp van JavaScript-objecten modelleert Sequelize de structuur van databasetabellen en maakt verbinding met de gewenste relationele database om gegevens op te vragen en te transformeren. Vervolgens worden de opgehaalde gegevens verwerkt en geretourneerd als een JavaScript object.

Het logo van de Sequelize Node.js bibliotheek.
Het Sequelize logo.

Kenmerken en voordelen van de Sequelize bibliotheek

  • Maakt verbinding met databases en voert bewerkingen uit zonder ruwe SQL-query’s te schrijven
  • Vermindert SQL injectie kwetsbaarheden en SQL injectie aanvallen
  • Compatibel met GraphQL

2. CORS

CORS is een Node.js pakket voor het bieden van cross-origin resource sharing (CORS) als middleware die gebruik maakt van Connect/Express.

Het CORS pakket vormt een wrapper rond de Node.js route middleware, waardoor de applicatie toegang heeft tot resources van andere domeinen dan het eigen domein. Het neemt meerdere parameters op om cross-origin opties te configureren, inclusief origin, headers en meer.

Schermafbeelding van CORS-bibliotheekcode in een teksteditor.
Een voorbeeld van CORS code (configuratie).

Kenmerken en voordelen van de CORS bibliotheek

  • Vermindert de hoeveelheid code die nodig is om CORS in een webapplicatie in te schakelen
  • Stelt je in staat om domeinen op een toestaan-lijst te configureren en laat de gebruiker CORS inschakelen voor geselecteerde origins terwijl andere worden geblokkeerd
  • Biedt naadloze foutafhandeling en helpt developers bij het analyseren van beveiligingsrisico’s van verdachte origins.

3. Nodemailer

Nodemailer maakt het eenvoudiger om e-mail te versturen vanaf de Node.js server. Het gebruikt een transportobject dat vertrouwt op Simple Mail Transfer Protocol (SMTP), naast andere ondersteunde transporten. Dit transportobject neemt from, to, subject, body, en andere parameters als invoer om een bericht te construeren.

Het logo van de Nodemailer Node.js bibliotheek.
Het logo van Nodemailer.

Kenmerken en voordelen van de Nodemailer bibliotheek

  • Een enkele module die meerdere transporten ondersteunt, waaronder SMTP, Amazon Simple Email Service (SES), Sendmail en stream
  • Ondersteunt tekst en HTML content als de body van de e-mail
  • Configureert afleverstatusmeldingen en ondersteunt bulkverzendingen van e-mails

4. Passport

Passport is een modulaire authenticatie middleware voor Node.js. Passport biedt meer dan 500 authenticatiestrategieën, waaronder Google, Facebook, Twitter en andere custom en single sign-on (SSO) aanbieders. De strategieën zijn onder normale authenticatie met gebruikersnaam en wachtwoord, gedelegeerde authenticatie met OAuth voor sociale mediasites en OpenID voor federatieve authenticatie.

Het logo van de Passport Node.js bibliotheek.
Het Passport logo.

Kenmerken en voordelen van de Passport bibliotheek

  • Ingebouwde SSO authenticatie voor sociale mediasites met minimale code
  • Configureert persistente inloggegevens voor meerdere sessies
  • Vermijdt montage van nieuwe routes in de applicatie door gebruik te maken van een ongehinderde configuratie met Express en Connect middleware

5. Async

Async is een krachtige Node.js utility module die developers helpt om te werken met asynchrone JavaScript door te werken met JavaScript “async” of callback-accepterende functies. Als je een array van callbacks doorgeeft aan de Async module, voert deze ze uit en wrapt ze om een promise terug te geven.

Het logo van de Async Node.js bibliotheek.
Het Async logo.

Kenmerken en voordelen van de Async bibliotheek

  • Biedt zo’n 70 utility functies om eenvoudig asynchrone control flows te ontwikkelen
  • Biedt een “parallelle” functie voor het afhandelen van meerdere verzoeken aan een host (wat anders veel code zou kosten om te implementeren)
  • Helpt bij het elimineren van nested “callback Hell” in JavaScript

6. Winston

Winston is een Node.js logbibliotheek die universeel loggen met meerdere transporten ondersteunt. Deze transporten slaan logs op en configureren ze volgens de behoeften van je applicatie.

Naast de standaard, helpt de createLogger functie je bij het maken van custom loggers die gebruik maken van beschikbare transportopties zoals consoles, bestanden en databases. Custom loggers kunnen worden gebruikt in combinatie met custom transporten.

Screenshot van Winston code in een teksteditor.
Een voorbeeld van Winston code.

Kenmerken en voordelen van de Winston bibliotheek

  • Centraliseert de controle over loggen via een enkel config bestand
  • Maakt custom logformats mogelijk, zoals het opslaan van je log in een JSON format of als tekst
  • Biedt custom logniveaus die je kunt configureren naar de behoeften van je applicatie

7. Mongoose

Mongoose is een op Node.js gebaseerde objectmodelleringstool voor MongoDB, ook bekend als een object data modeling (ODM) bibliotheek, die verschillende featuresbiedt zoals hooks, modelvalidatie, connecting en query’s uitvoeren.

Mongoose biedt een op  schema gebaseerde oplossing voor applicatiegegevens door een enkel schema af te dwingen op de applicatielaag die een collectie maakt in MongoDB. Elk schema is gekoppeld aan een Mongoose model, waarmee je query’s kunt uitvoeren tegen een MongoDB collectie, zoals het fetchen, updaten en verwijderen van gegevens.

Het logo van de Mongoose Node.js bibliotheek.
Het Mongoose logo.

Kenmerken en voordelen van de Mongoose bibliotheek

  • Biedt eenvoudige abstractie van queries, waardoor developers minder code hoeven te schrijven voor MongoDB transacties
  • Ingebouwde gegevensvalidatie voor het definiëren van regels over welk soort gegevens kunnen worden toegevoegd of bijgewerkt in de database
  • Implementeert een voorgedefinieerde structuur voor de MongoDB-collectie, die een standaard MongoDB-instantie biedt voor developers
  • Staat query chaining toe voor het werken met meerdere queries

8. Socket.IO

Socket.IO is een Node.js communicatie bibliotheek die real-time, bidirectionele, event-gebaseerde communicatie tot stand brengt tussen een client browser en de server.

Het gebruikt Engine.IO om een low-level verbinding tussen de server en de client op te zetten, met behulp van een digitale handshake door middel van HTTP long-polling. Zodra de verbinding tot stand is gebracht, vindt de communicatie tussen de client en de server in real-time plaats via TCP.

Het logo van de Sockets.IO Node.js bibliotheek.
Het Sockets.IO logo.

Kenmerken en voordelen van de Sockets.IO bibliotheek

  • Biedt een low-overhead communicatiekanaal met WebSocket en staat HTTP long-polling toe als fallback optie
  • Schaalbaar en staat servers toe om eenvoudig events naar meerdere clients te broadcasten
  • Ondersteunt multiplexing door middel van namespaces, waardoor het aantal gebruikte TCP verbindingen wordt geminimaliseerd en socket poorten op de server worden gereduceerd

9. Lodash

Lodash is een utility bibliotheek die developers helpt beknopte en onderhoudbare JavaScript code te schrijven. Het heeft meer dan 200 utility features om alledaagse programmeertaken te vereenvoudigen, waaronder type control, eenvoudige rekenbewerkingen en meer.

Het logo van de Lodash Node.js bibliotheek.
Het Lodash logo.

Kenmerken en voordelen van de Lodash bibliotheek

  • Behoudt compatibiliteit tussen browsers met behulp van polyfills
  • Biedt ingebouwde oplossingen voor het werken met een array van objecten, waardoor bewerkingen zoals filter, find en flatMap
  • Helpt developers om herhaling te voorkomen en helpt hen om schone code te behouden

10. Axios

Axios is een op promises gebaseerde HTTP client voor browsers en Node.js. Het zorgt ook voor de transformatie van verzoek- en responsgegevens van de browser of Node.js als dat nodig is.

Axios is isomorph, wat betekent dat het kan draaien op de server en de client met dezelfde codebase. Voor HTTP communicatie gebruikt Axios een native HTTP module aan de serverkant en XMLHttpRequest aan de clientkant.

Het logo van de Axios Node.js bibliotheek.
Het Axios logo.

Kenmerken en voordelen van de Axios Bibliotheek

  • Biedt ingebouwde API-functies voor veelvoorkomende HTTP gegevenstypen zoals GET, PUT, POST, en DELETE
  • Biedt meer beveiliging door cross-site request forgery (CSRF) bescherming tijdens het maken van HTTP verzoeken over het internet
  • Zet eenvoudig responsgegevens om naar JSON door automatische JSON gegevenstransformatie

11. Puppeteer

Puppeteer is een Node.js bibliotheek die Chrome automatiseert door een high-level API te bieden om Chrome/Chromium te besturen via DevTools Protocol. Het automatiseert frontend testen, waaronder tests voor het afhandelen van verzoeken, het lokaliseren en vergelijken van UI-elementen, prestatietests en meer.

Developers kunnen het Puppeteer pakket in hun code importeren om een Chromium instance te maken. De instance kan dan tests automatiseren door te communiceren met de browser-engine.

Het logo van de Puppeteer Node.js bibliotheek.
Het Puppeteer logo.

Kenmerken en voordelen van de Puppeteer bibliotheek

  • Nul installatie, eenvoudig te configureren en vereist geen extra drivers
  • Doorzoekt websites om vooraf gerenderde inhoud te genereren
  • Compatibel met populaire testframeworks zoals Jest en Mocha

12. Multer

Multer is een middleware bibliotheek voor Node.js. Het is geschreven bovenop de HTML form-parser busboy en verwerkt multipart en multiform data.

Na het initialiseren van de Multer instance, neemt het een dest object als een van de opties om aan te geven waar het geüploade bestand wordt opgeslagen op de server. Multer stuurt een file object mee met het uploadverzoek, dat vervolgens wordt geparsed en naar de bestemmingslocatie wordt gestuurd door Multer API.

Screenshot van Multer code in een teksteditor.
Een voorbeeld van Multer code met HTML formulieropmaak.

Kenmerken en voordelen van de Multer bibliotheek

  • Maakt ruwe HTTP verzoekgegevens toegankelijker voor opslag door ingebouwde parsing
  • Laat je het coderingstype voor het bestand opgeven, wat een extra beveiligingslaag toevoegt aan het geüploade bestand
  • Filtert en kan uploadopties beperken voor bestandstype en -grootte

13. Dotenv

Dotenv is een Node.js utility library die omgevingsvariabelen in de applicatie beheert en gevoelige configuratievariabelen beschermt. Dotenv helpt de applicatie ook om de twelf-factor app-methodologie te volgen bij het opslaan van omgevingsvariabelen. Door de Dotenv bibliotheek in een vroeg stadium te configureren, worden de omgevingsvariabelen automatisch geïnjecteerd van .env naar provess.env.

Het logo van de Dotenv Node.js bibliotheek.
Het Dotenv logo.

Kenmerken en voordelen van de Dotenv bibliotheek

  • Helpt je geheimen – zoals API-sleutels en aanmeldingsgegevens – te scheiden van de broncode en laat elke developer een .env bestand maken voor eigen gebruik
  • Draagt niet bij aan de grootte van de applicatie dankzij de zero-dependency module

Samenvatting

Node.js heeft een overvloed aan nuttige bibliotheken, maar het kiezen van de beste voor jouw project kan lastig zijn. Sommige van de Node.js bibliotheken die we hier hebben behandeld, kunnen “must-haves” zijn voor je volgende applicatie.

Als je bijvoorbeeld voornamelijk met MongoDB werkt, kan het gebruik van Mongoose een redder in nood zijn. CORS kan je helpen om inhoud van meerdere domeinen te leveren en Dotenv kan erg handig zijn als je code moet delen – maar geen geheimen – binnen een team.

Nu je een kijkje hebt genomen in enkele van de meest essentiële pakketten in Node.js, is het tijd om je eigen Node.js applicatie te bouwen. De platforms Applicatie Hosting en Database Hosting van Kinsta kunnen je ontwikkelingsproces versnellen. En je kunt gratis aan de slag op Kinsta’s Hobby pakket en opschalen wanneer je applicatie de wereld verovert.

Steve Bonisteel Kinsta

Steve Bonisteel is a Technical Editor at Kinsta who began his writing career as a print journalist, chasing ambulances and fire trucks. He has been covering Internet-related technology since the late 1990s.