Scrivere un programma in JavaScript per il browser è un po’ diverso dallo scrivere un programma JavaScript per Node.js. In entrambi i casi il programma si può dividere in moduli indipendenti, tuttavia NodeJS usa dei moduli (detti di tipo CommonJS) di tipo diverso da quelli usati dal browser (detti di tipo ES6).
Si vedrà un esempio specifico di un solo tipo, ma ricordiamo che ci sono due tipi di moduli in JavaScript
- ES Module (default per React Native, quindi accettati anche per Node.js)
- CommonJS Module (default per Node.js)
ES6
In particolare, negli ES module
- si usano le parole chiave
import
edexport
- si possono importare più funzioni o più classi, si usano le parentesi graffe per indicare quali si desidera importare (separandoli con le virgole)
- si può importare una sola funzione o una sola classe, e in tale caso non è necessario usare le parentesi graffe
- con la parola chiave as si può cambiare il nome all’elemento importato
Quando si desidera usare moduli di tipo ES6 (EcmaScript6) (con import
/export
) si deve (in alternativa):
- scrivere nel file package.json
"type": "module"
- (senza usare “type”) scrivere il nome del file con estensione
.mjs
Rispettare queste semplici regole:
- Quando si esporta con default non usare le parentesi graffe, nè su export, nè su import
- Quando si esporta senza default con le parentesi graffe, si importa con le parentesi graffe
export default funzione;
CommonJS
Quando si desidera usare moduli predefiniti di NodeJS (oppure detti CommonJS) (con require
/exports
) si deve (in alternativa):
- scrivere nel file package.json manca il campo type oppure se questo vale
"type": "commonjs"
- (senza usare “type”) scrivere il nome del file con estensione,
.js
oppure.cjs
In questo esempio, si deve creare una cartella di progetto (progetto4) e inizializzare il progetto. Verrà chiesto di rispondere a delle domande, per generare un file package.json
$ nvm use node $ mkdir progetto4 $ cd progetto4 $ npm init
Alla domanda “Entry point” si potrebbe usare come risposta: index.js
Si allega il codice sorgente di un esempio di progetto (con licenza CC-by) tratto da questa pagina1 in cui si mostra il funzionamento delle funzioni asincrone:
Ogni funzione JavaScript è scritta all’interno di in un diverso file sorgente, che costituisce un diverso modulo ES6
Per avviare il progetto si può scrivere
node .
- https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function [↩]