Categories
async moduli Node.js npm

Node.js (4)

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 ed export
  • 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 .

  1. https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/async_function []

Leave a Reply