Notice: This page requires JavaScript to function properly.
Please enable JavaScript in your browser settings or update your browser.
Impara Combinazione di CommonJS e Moduli ES | Sezione
Fondamenti di Node.js

bookCombinazione di CommonJS e Moduli ES

Scorri per mostrare il menu

Quando si lavora su progetti Node.js, è possibile incontrare sia CommonJS che ES Modules all'interno dello stesso codice sorgente. Node.js utilizzava originariamente CommonJS (require/module.exports), ma ora supporta anche ES Modules (import/export). La combinazione di questi due sistemi può risultare complessa a causa delle differenze di sintassi, estensioni dei file e comportamento di caricamento. Possono sorgere problemi di compatibilità perché non tutte le funzionalità sono disponibili quando si importa un tipo di modulo nell'altro. È importante comprendere le strategie per utilizzare entrambi i sistemi insieme, così come le limitazioni che si possono incontrare.

Una strategia comune consiste nello scegliere un sistema di moduli principale per il progetto e utilizzare le funzionalità di compatibilità solo quando necessario. Ad esempio, si può mantenere la maggior parte del codice in CommonJS per garantire la compatibilità con strumenti più datati, ma utilizzare ES Modules per il codice più recente o quando sono necessarie funzionalità come import.meta.url. Node.js consente di specificare il tipo di modulo nel file package.json tramite il campo "type": "commonjs" oppure "module". I file con estensione .cjs sono sempre trattati come CommonJS, mentre i file .mjs sono sempre considerati ES Modules, indipendentemente dal campo "type". Questo offre flessibilità nel mescolare i tipi di modulo all'interno di un progetto, ma è necessario essere consapevoli delle limitazioni e delle differenze nel caricamento e nell'esecuzione dei moduli.

math.cjs

math.cjs

app.mjs

app.mjs

copy

L'esempio di codice mostra come sia possibile utilizzare un modulo CommonJS all'interno di un ES Module in Node.js. Il file math.cjs utilizza la sintassi CommonJS, esportando una funzione add con module.exports.add = (a, b) => a + b;. Questa funzione somma due numeri e restituisce il risultato.

Il file app.mjs è un ES Module. Gli ES Modules non possono utilizzare direttamente require, quindi si importa la funzione createRequire dal pacchetto integrato module. Chiamando createRequire(import.meta.url), si crea una funzione require che funziona nel contesto dell'attuale file ES Module. Si utilizza quindi questo require per importare il modulo CommonJS (math.cjs).

Quando si chiama math.add(2, 3), il codice stampa 5 sulla console. Questo approccio consente di combinare CommonJS ed ES Modules nello stesso progetto, sfruttando i punti di forza di ciascun sistema dove necessario.

question mark

Quando è opportuno scegliere CommonJS invece degli ES Modules in un progetto Node.js?

Seleziona la risposta corretta

Tutto è chiaro?

Come possiamo migliorarlo?

Grazie per i tuoi commenti!

Sezione 1. Capitolo 17

Chieda ad AI

expand

Chieda ad AI

ChatGPT

Chieda pure quello che desidera o provi una delle domande suggerite per iniziare la nostra conversazione

Sezione 1. Capitolo 17
some-alt