Oltre alla risposta di @ Louis, supponendo che tu abbia già un sacco di librerie di terze parti specificate nella configurazione require.js, nei tuoi nuovi moduli ES6, ogni volta che importi un modulo, sia esso amd o es6, dovrai va bene finché si mantiene coerente il nome del modulo importato.Per esempio:
Ecco la gulpfile:
gulp.task("es6", function() {
return gulp.src("modules/newFolder//es6/*.js")
.pipe(babel({
"presets": ["es2015"],
"plugins": ["transform-es2015-modules-amd"]
// don't forget to install this plugin
}))
.pipe(gulp.dest("modules/newFolder/build"));
});
Ecco il file ES6:
import d3 from 'd3';
import myFunc from 'modules/newFolder/es6module'
// ...
Questo sarà compilato per sth come questo:
define(['d3', 'modules/newFolder/es6module'], function (_d, _myFunc) {
'use strict';
// ...
});
più a lungo come il modulo in define(['d3', 'modules/newFolder/es6module'], ...
del file compilato va bene in un file AMD originale, dovrebbe funzionare con sotto l'existi ng require.js setup, come ad esempio comprimere i file, ecc.
In termini di domande @ coderC sui caricatori require.js, stavo usando i18n!nls/lang
nei moduli AMD, all'inizio pensavo che sarebbe stata una cosa davvero difficile trovare un alternativa ai caricatori di plugin AMD nei moduli ES6 e sono passato ad altri strumenti di localizzazione come i18next
. Ma si è scoperto che va bene per fare questo:
import lang from 'i18n!nls/lang';
// import other modules..
perché sarà compilato dal compito sorso di STH come:
define(['d3', 'i18n!nls/lang'], function (_d, _lang) {
// ....
In questo modo, non ci si deve preoccupare la richiedono .js loader.
In breve, nei moduli ES6, se si desidera utilizzare plug-in/moduli AMD esistenti, è sufficiente assicurarsi che il file compilato sia conforme alla configurazione esistente. Inoltre, è possibile provare anche il bundle di moduli ES6 Rollup per raggruppare tutti i nuovi file ES6.
Spero che questo possa essere utile per coloro che stanno cercando di integrare la sintassi ES6 nel progetto.
"* funziona solo per nuovi moduli senza dipendenze da moduli AMD esistenti *" - perché la pensi così? Se compili AMD e usi requirejs per caricare i tuoi moduli, puoi ancora banalmente richiedere moduli "normali" (non compilati). – Bergi
Sì, come ha detto @Berg, avete intenzione di compilare i vostri moduli ES2015 su qualcosa di diverso da AMD? – JMM
Voglio compilare solo i moduli ES2015 su AMD. Tuttavia, come ho già detto, ho già alcuni moduli AMD che vorrei importare nel mio modulo ES2015 in modo da poterli riutilizzare invece di riscriverli di nuovo. – coderC