2014-09-16 20 views
7

Ultimamente sto scrivendo molto ES6, usando la sintassi import {variable} from 'ES6module' e compilando il codice nel browser con traceur-compiler. Ho iniziato a guardare a systemjs poiché sembrava che potesse consentirmi di utilizzare la stessa sintassi per importare i moduli AMD, commonJS, e ES6.Importare i moduli commonJS, AMD ed ES6 in fase di runtime con sintassi sincrona

Leggere la documentazione ha iniziato a confondermi. Vedo un sacco di chiamate asincrone come System.import('path/to/module').then(function(variable) { ... }) che non sono abituato a importare per le dipendenze.

ho letto Practical workflows for ES6 modules, che copre diversi flussi di lavoro diversi, nessuno dei quali comporta l'importazione di un modulo ES6 e un/modulo commonjs AMD in fase di esecuzione. Sto pensando qualcosa di simile:

import {myObject} from 'my/es6/module'; 
import {_} from 'lib/underscore'; 

o se non quello, di almeno:

import {myObject} from 'my/es6/module'; 
var _ = require('lib/underscore'); 

Sono uno di questi possibili con systemjs?

risposta

9

Questo caso d'uso è esattamente ciò per cui è progettato SystemJS.

si può scrivere:

import {myObject} from 'my/es6/module'; 
import _ from 'lib/underscore'; 

Il motivo è perché CommonJS, AMD e moduli globali in SystemJS vengono trattati come se esportare solo una proprietà default, che corrisponde alla sintassi di importazione di default sopra.

+0

Fantastico! E suppongo che questo significhi anche che chiamate successive a 'import _ da 'lib/underscore';' riutilizzeranno il modulo già importato? – bennlich

+0

Sì esattamente - le istanze del modulo sono condivise. – guybedford

Problemi correlati