Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Lære Blanding av CommonJS og ES-moduler | Seksjon
/
Node.js-Grunnleggende

bookBlanding av CommonJS og ES-moduler

Sveip for å vise menyen

Når du arbeider med Node.js-prosjekter, kan du støte på både CommonJS og ES Modules i samme kodebase. Node.js brukte opprinnelig CommonJS (require/module.exports), men støtter nå også ES Modules (import/export). Å blande disse to systemene kan være utfordrende på grunn av forskjeller i syntaks, filendelser og lastemåte. Kompatibilitetsproblemer oppstår fordi ikke alle funksjoner er tilgjengelige når du importerer én type modul i en annen. Du bør forstå strategiene for å bruke begge systemene sammen, samt begrensningene du kan møte.

En vanlig strategi er å velge ett hovedmodulsystem for prosjektet og kun bruke kompatibilitetsfunksjoner ved behov. For eksempel kan du holde mesteparten av koden i CommonJS for kompatibilitet med eldre verktøy, men bruke ES Modules for nyere kode eller når du trenger funksjoner som import.meta.url. Node.js lar deg spesifisere modultypen i package.json-filen ved å bruke feltet "type": "commonjs" eller "module". Filer med .cjs behandles alltid som CommonJS, mens .mjs-filer alltid er ES Modules, uavhengig av feltet "type". Dette gir deg fleksibilitet til å blande modultyper i et prosjekt, men du bør være oppmerksom på begrensningene og forskjellene i hvordan moduler lastes og kjøres.

math.cjs

math.cjs

app.mjs

app.mjs

copy

Kodeeksempelet viser hvordan du kan bruke en CommonJS-modul inne i en ES Module i Node.js. Filen math.cjs bruker CommonJS-syntaks og eksporterer en add-funksjon med module.exports.add = (a, b) => a + b;. Denne funksjonen legger sammen to tall og returnerer resultatet.

Filen app.mjs er en ES Module. ES Modules kan ikke bruke require direkte, så du importerer funksjonen createRequire fra den innebygde module-pakken. Ved å kalle createRequire(import.meta.url) oppretter du en require-funksjon som fungerer i konteksten til den gjeldende ES Module-filen. Du bruker deretter denne require til å importere CommonJS-modulen (math.cjs).

Når du kaller math.add(2, 3), skriver koden ut 5 til konsollen. Denne tilnærmingen lar deg blande CommonJS og ES Modules i samme prosjekt, slik at du kan bruke styrkene til hvert system der det er nødvendig.

question mark

Når bør du velge CommonJS fremfor ES Modules i et Node.js-prosjekt?

Velg det helt riktige svaret

Alt var klart?

Hvordan kan vi forbedre det?

Takk for tilbakemeldingene dine!

Seksjon 1. Kapittel 17

Spør AI

expand

Spør AI

ChatGPT

Spør om hva du vil, eller prøv ett av de foreslåtte spørsmålene for å starte chatten vår

Seksjon 1. Kapittel 17
some-alt