Ricerca…


Utilizzando un modulo semplice in node.js

Che cos'è un modulo node.js ( link all'articolo ):

Un modulo incapsula codice correlato in una singola unità di codice. Quando si crea un modulo, questo può essere interpretato come lo spostamento di tutte le funzioni correlate in un file.

Ora vediamo un esempio. Immagina che tutti i file siano nella stessa directory:

File: printer.js

"use strict";

exports.printHelloWorld = function (){
    console.log("Hello World!!!");
}

Un altro modo di utilizzare i moduli:

File animals.js

"use strict";

module.exports = {
    lion: function() {
        console.log("ROAARR!!!");
    }

};

File: app.js

Esegui questo file andando nella tua directory e digitando: node app.js

"use strict";

//require('./path/to/module.js') node which module to load
var printer = require('./printer');
var animals = require('./animals');

printer.printHelloWorld(); //prints "Hello World!!!"
animals.lion(); //prints "ROAARR!!!"

Uso delle importazioni in ES6

Node.js è costruito contro le versioni moderne di V8. Aggiornandosi con le ultime versioni di questo motore, ci assicuriamo che le nuove funzionalità della specifica JavaScript ECMA-262 vengano portate agli sviluppatori di Node.js in modo tempestivo, così come i continui miglioramenti delle prestazioni e della stabilità.

Tutte le funzioni di ECMAScript 2015 (ES6) sono suddivise in tre gruppi per le funzioni di spedizione, messa in scena e in corso:

Tutte le funzionalità di spedizione, che V8 considera stabili, sono attivate per impostazione predefinita su Node.js e NON richiedono alcun tipo di flag di runtime. Le funzionalità messe in scena, che sono funzionalità quasi completate che non sono considerate stabili dal team V8, richiedono un flag di runtime: --harmony. Le funzioni in corso possono essere attivate singolarmente mediante il rispettivo flag di armonia, sebbene questo sia altamente sconsigliato a meno che non per scopi di test. Nota: questi flag sono esposti da V8 e cambieranno potenzialmente senza alcun avviso di deprecazione.

Attualmente ES6 supporta le istruzioni di importazione in modo nativo. Fare riferimento qui

Quindi se abbiamo un file chiamato fun.js ...

export default function say(what){
  console.log(what);
}

export function sayLoud(whoot) {
  say(whoot.toUpperCase());
}

... e se c'era un altro file chiamato app.js cui vogliamo inserire le funzioni precedentemente definite, ci sono tre modi per importarle.

Importa predefinito

import say from './fun';
say('Hello Stack Overflow!!');  // Output: Hello Stack Overflow!!

Importa la funzione say() perché è contrassegnata come l'esportazione predefinita nel file sorgente ( export default … )

Importazioni con nome

import { sayLoud } from './fun';
sayLoud('JS modules are awesome.'); // Output: JS MODULES ARE AWESOME.

Le importazioni con nome ci consentono di importare esattamente le parti di un modulo di cui abbiamo effettivamente bisogno. Lo facciamo nominandoli esplicitamente. Nel nostro caso nominando sayLoud tra parentesi graffe all'interno della dichiarazione di importazione.

Importazione in bundle

import * as i from './fun';
i.say('What?'); // Output: What?
i.sayLoud('Whoot!'); // Output: WHOOT!

Se vogliamo avere tutto, questa è la strada da percorrere. Usando la sintassi * as i abbiamo la dichiarazione di import fornirci un oggetto i che contiene tutte le esportazioni del nostro modulo fun come proprietà corrispondenti.

percorsi

Tieni presente che devi contrassegnare esplicitamente i percorsi di importazione come percorsi relativi anche se il file da importare risiedeva nella stessa directory come il file in cui stai importando utilizzando ./ . Importa da percorsi non prefissati come

import express from 'express';

verrà cercato nelle cartelle node_modules locali e globali e genererà un errore se non viene trovato alcun modulo corrispondente.

Esportazione con sintassi ES6

Questo è l'equivalente dell'altro esempio, ma usando ES6.

export function printHelloWorld() {
  console.log("Hello World!!!");
}


Modified text is an extract of the original Stack Overflow Documentation
Autorizzato sotto CC BY-SA 3.0
Non affiliato con Stack Overflow