Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lära Blanda CommonJS och ES-moduler | Sektion
Node.js-Grunder

bookBlanda CommonJS och ES-moduler

Svep för att visa menyn

Vid arbete med Node.js-projekt kan du stöta på både CommonJS och ES-moduler i samma kodbas. Node.js använde ursprungligen CommonJS (require/module.exports), men stöder nu även ES-moduler (import/export). Att blanda dessa två system kan vara utmanande på grund av skillnader i syntax, filändelser och laddningsbeteende. Kompatibilitetsproblem uppstår eftersom inte alla funktioner är tillgängliga när man importerar en typ av modul i en annan. Det är viktigt att förstå strategierna för att använda båda systemen tillsammans, samt de begränsningar som kan uppstå.

En vanlig strategi är att välja ett primärt modulsystem för projektet och endast använda kompatibilitetsfunktioner vid behov. Till exempel kan du behålla större delen av koden i CommonJS för kompatibilitet med äldre verktyg, men använda ES-moduler för nyare kod eller när du behöver funktioner som import.meta.url. Node.js låter dig ange modultyp i din package.json-fil med fältet "type": "commonjs" eller "module". Filer med .cjs behandlas alltid som CommonJS, medan .mjs-filer alltid är ES-moduler, oavsett värdet på fältet "type". Detta ger flexibilitet att blanda modultyper inom ett projekt, men du bör vara medveten om begränsningarna och skillnaderna i hur moduler laddas och körs.

math.cjs

math.cjs

app.mjs

app.mjs

copy

Kodexemplet visar hur du kan använda en CommonJS-modul i en ES-modul i Node.js. Filen math.cjs använder CommonJS-syntax och exporterar en add-funktion med module.exports.add = (a, b) => a + b;. Denna funktion adderar två tal och returnerar resultatet.

Filen app.mjs är en ES-modul. ES-moduler kan inte använda require direkt, så du importerar funktionen createRequire från det inbyggda paketet module. Genom att anropa createRequire(import.meta.url) skapar du en require-funktion som fungerar i kontexten av den aktuella ES-modulfilen. Du använder sedan denna require för att importera CommonJS-modulen (math.cjs).

När du anropar math.add(2, 3) skriver koden ut 5 i konsolen. Detta tillvägagångssätt gör det möjligt att blanda CommonJS och ES-moduler i samma projekt och använda styrkorna hos respektive system där det behövs.

question mark

När bör du välja CommonJS framför ES-moduler i ett Node.js-projekt?

Vänligen välj det korrekta svaret

Var allt tydligt?

Hur kan vi förbättra det?

Tack för dina kommentarer!

Avsnitt 1. Kapitel 17

Fråga AI

expand

Fråga AI

ChatGPT

Fråga vad du vill eller prova någon av de föreslagna frågorna för att starta vårt samtal

Avsnitt 1. Kapitel 17
some-alt