Sintassi tipo 'CommonJS' e 'Module' in NodeJs

In NodeJs รจ possibile importare i pacchetti installati tramite npm (o moduli personalizzati) o tramite import o tramite require.

Pubblicato da ,
Ultima modifica

NodeJs ha due tipi di sintassi per includere i pacchetti npm o moduli personalizzati

  1. CommonJS
  2. Module

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';