NodeJs ha due tipi di sintassi per includere i pacchetti npm o moduli personalizzati
CommonJS è la sintassi di default che usa nodejs ( tramite require ), ad esempio per importare expressjs in un file index.js usiamo la seguente sintassi
index.js
const express = require('express');
se invece abbiamo un modulo personalizzato creato da noi module.js la sintassi è la seguente
index.js
const m = require('./module');
Per utilizzare la sintassi Module ( tramite import ) abbiamo due modi per farlo
- modificare il file package.json
- usare l'estensione .mjs per i file da importare
Nel primo caso bisogna aggiungere al file package.json la chiave type uguale a module
package.json
{
"name": "myapp",
"version": "1.0.0",
"description": "",
...................
...................
"type": "module",
...................
...................
}
di default il valore type è uguale a commonjs, quindi nel caso di espressjs la sintassi sarebbe
index.js
import express from 'express';
se invece abbiamo un modulo nostro personalizzato come questo
module.js
const arithmetic_average = (...n) => {
let count = n.length;
let sum = 0;
for (let i = 0; i < count; i++) {
sum += n[i];
}
let media = sum / count;
return media;
};
export {arithmetic_average};
importante aggiungere l'attributo export nel modulo affinchè possa essere importato, la sintassi è la seguente
index.js
import { arithmetic_average } from './module.js';
Nel secondo caso cioè usare un'estensione .mjs, il file utilizzato in precedenza module.js diventerà module.mjs
module.mjs
const arithmetic_average = (...n) => {
let count = n.length;
let sum = 0;
for (let i = 0; i < count; i++) {
sum += n[i];
}
let media = sum / count;
return media;
};
export {arithmetic_average};
anche in questo caso non dimentichiamo di usare l'attributo export, e quindi per importarlo nel file index.js usiamo la seguente sintassi
index.js
import { arithmetic_average } from './module.mjs';