Oprócz odpowiedzi @ Louisa, zakładając, że masz już bibliotekę stron trzecich określoną w konfiguracji require.js, w nowych modułach ES6, za każdym razem, gdy importujesz moduł, czy to amd czy es6, będzie w porządku, o ile zachowasz spójność nazwy importowanego modułu.Na przykład:
Oto 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"));
});
Oto plik ES6:
import d3 from 'd3';
import myFunc from 'modules/newFolder/es6module'
// ...
ta zostanie skompilowany do sth tak:
define(['d3', 'modules/newFolder/es6module'], function (_d, _myFunc) {
'use strict';
// ...
});
jak długo ponieważ moduł w define(['d3', 'modules/newFolder/es6module'], ...
skompilowanego pliku jest w porządku w oryginalnym pliku AMD, powinien działać z under ng konfiguracja require.js, np. kompresowanie plików itp.
Jeśli chodzi o pytanie @ coderC dotyczące ładowarek require.js, używałam i18n!nls/lang
w modułach AMD, początkowo myślałam, że będzie to bardzo trudne. alternatywa dla ładowarek AMD w modułach ES6 i przełączyłem się na inne narzędzia lokalizacyjne, takie jak i18next
. Ale okazało się, że to jest w porządku, aby to zrobić:
import lang from 'i18n!nls/lang';
// import other modules..
ponieważ zostanie on opracowany przez zadania haustem do sth jak:
define(['d3', 'i18n!nls/lang'], function (_d, _lang) {
// ....
ten sposób nie musimy się martwić o require .js loader.
W skrócie, w modułach ES6, jeśli chcesz użyć istniejącej wtyczki/modułów AMD, wystarczy upewnić się, że skompilowany plik jest zgodny z istniejącą konfiguracją. Ponadto można wypróbować moduł ES6 do pakowania modułów Rollup, aby spakować wszystkie nowe pliki ES6.
Mam nadzieję, że może to być pomocne dla tych, którzy próbują zintegrować składnię ES6 w projekcie.
"* działa tylko w przypadku nowych modułów bez zależności od istniejących modułów AMD *" - dlaczego tak uważasz? Jeśli kompilujesz do AMD i używasz requirejs do ładowania swoich modułów, wciąż możesz wymagać "normalnych" (nieskompilowanych) modułów. – Bergi
Tak, tak jak powiedział @Bergi, czy planujesz skompilować swoje moduły ES2015 do czegoś innego niż AMD? – JMM
Chcę skompilować moduły ES2015 tylko do AMD. Jednak, jak już wspomniałem, mam już kilka modułów AMD, które chciałbym zaimportować do mojego modułu ES2015, aby móc je ponownie wykorzystać zamiast przepisać je ponownie. – coderC