Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Leer Het Combineren van CommonJS en ES-Modules | Sectie
Oefenen
Projecten
Quizzen & Uitdagingen
Quizzen
Uitdagingen
/
Node.js Basisprincipes

bookHet Combineren van CommonJS en ES-Modules

Veeg om het menu te tonen

Bij het werken aan Node.js-projecten kun je zowel CommonJS als ES Modules tegenkomen binnen dezelfde codebase. Node.js gebruikte oorspronkelijk CommonJS (require/module.exports), maar ondersteunt nu ook ES Modules (import/export). Het combineren van deze twee systemen kan lastig zijn vanwege verschillen in syntaxis, bestandsextensies en laadmethode. Compatibiliteitsproblemen ontstaan omdat niet alle functies beschikbaar zijn bij het importeren van het ene type module in het andere. Het is belangrijk om de strategieën te begrijpen voor het samen gebruiken van beide systemen, evenals de beperkingen waarmee je te maken kunt krijgen.

Een veelgebruikte strategie is om één hoofdsysteem voor modules te kiezen voor je project en compatibiliteitsopties alleen te gebruiken wanneer dat nodig is. Je kunt bijvoorbeeld het grootste deel van je code in CommonJS houden voor compatibiliteit met oudere tools, maar ES Modules gebruiken voor nieuwere code of wanneer je functies zoals import.meta.url nodig hebt. Node.js laat je het moduletype specificeren in je package.json-bestand via het veld "type": "commonjs" of "module". Bestanden met de extensie .cjs worden altijd als CommonJS behandeld, terwijl .mjs-bestanden altijd als ES Modules worden gezien, ongeacht het veld "type". Dit geeft flexibiliteit om verschillende moduletypen binnen een project te combineren, maar je moet je bewust zijn van de beperkingen en verschillen in hoe modules worden geladen en uitgevoerd.

math.cjs

math.cjs

app.mjs

app.mjs

copy

Het codevoorbeeld laat zien hoe je een CommonJS-module kunt gebruiken binnen een ES Module in Node.js. Het bestand math.cjs gebruikt de CommonJS-syntaxis en exporteert een add-functie met module.exports.add = (a, b) => a + b;. Deze functie telt twee getallen op en geeft het resultaat terug.

Het bestand app.mjs is een ES Module. ES Modules kunnen require niet direct gebruiken, dus importeer je de functie createRequire uit het ingebouwde module-pakket. Door createRequire(import.meta.url) aan te roepen, maak je een require-functie die werkt in de context van het huidige ES Module-bestand. Vervolgens gebruik je deze require om de CommonJS-module (math.cjs) te importeren.

Wanneer je math.add(2, 3) aanroept, geeft de code 5 weer in de console. Deze aanpak maakt het mogelijk om CommonJS en ES Modules in hetzelfde project te combineren, waarbij je de sterke punten van elk systeem gebruikt waar dat nodig is.

question mark

Wanneer kies je voor CommonJS boven ES Modules in een Node.js-project?

Selecteer het correcte antwoord

Was alles duidelijk?

Hoe kunnen we het verbeteren?

Bedankt voor je feedback!

Sectie 1. Hoofdstuk 17

Vraag AI

expand

Vraag AI

ChatGPT

Vraag wat u wilt of probeer een van de voorgestelde vragen om onze chat te starten.

Sectie 1. Hoofdstuk 17
some-alt