Che cosa è così difficile con i moduli ES6 per Node? [chiuso]

0

Sembra che le importazioni ES6 di Node siano state un bugbear per un po '. C'è il flag --experimental-modules , o opzioni come usare Babel - ma i moduli AFAIK ES6 non sono ancora supportati in vanilla Node.js.

Nel frattempo, i moduli ES6 sono supportati da tutti i principali browser.

Perché i browser sono stati in grado di implementarli, ma il nodo no?

    
posta dwjohnston 15.09.2018 - 05:21
fonte

1 risposta

4

Essenzialmente, si riduce a come ottenere due sistemi di moduli molto diversi per lavorare insieme. I moduli CommonJS (CJS) sono dinamici e caricati in modo sincrono, i moduli ES sono statici, immutabili e caricati in modo asincrono. Ma nessuno vuole rompere l'ecosistema del Nodo, il che significa che vogliamo essere in grado di caricare moduli CJS da moduli ES e viceversa, idealmente senza che l'utente debba sapere quale tipo di moduli utilizza un pacchetto. (Al momento non è possibile caricare i moduli ES dai moduli CJS, che richiederà una nuova funzione di caricamento asincrona.) Alcune persone vogliono anche essere in grado di pubblicare pacchetti con esportazioni in entrambi i tipi di modulo.

I browser non avevano alcun tipo di modulo in precedenza, quindi non dovevano far cooperare i moduli ES con nulla. Potrebbero semplicemente eseguire un'implementazione semplice.

Qualsiasi sistema di moduli in ambienti così diversi come browser e Node avranno alcuni casi complicati. Anche se con --experimental-modules flag l'implementazione dei moduli ES del Node è in gran parte uguale a quella di un browser, ci sono ancora differenze. Ad esempio, i browser caricheranno solo da URL completi, ma il Nodo caricherà pacchetti da node_modules con solo un nome di pacchetto.

    
risposta data 15.09.2018 - 08:09
fonte

Leggi altre domande sui tag