@ Louisの答えに加えて、require.jsの設定で指定されているサードパーティのライブラリがすでにあると仮定し、新しいES6モジュールでは、モジュールをインポートするたびにamdまたはes6になりますインポートされたモジュール名を一貫して保持していれば問題ありません。例:ここでは
は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"));
});
はES6ファイルです:
import d3 from 'd3';
import myFunc from 'modules/newFolder/es6module'
// ...
これは、このようSTHにコンパイルされます。
define(['d3', 'modules/newFolder/es6module'], function (_d, _myFunc) {
'use strict';
// ...
});
限りコンパイルされたファイルのdefine(['d3', 'modules/newFolder/es6module'], ...
のモジュールが元のAMDファイルで問題ないので、最初は、私は、AMDモジュールでi18n!nls/lang
を使用していたrequire.jsローダーについて@ coderCの質問の点でなど
NG require.js設定、などの圧縮ファイルには、私はそれを見つけるには本当に難しいものになるだろうと思いましたES6モジュールのAMDプラグインローダーの代わりに、i18next
などの他のローカリゼーションツールに切り替えました。しかし、それはこれを行うには大丈夫だということが判明した:
import lang from 'i18n!nls/lang';
// import other modules..
それのようSTHするゴクゴクタスクによってコンパイルされますので:
define(['d3', 'i18n!nls/lang'], function (_d, _lang) {
// ....
この道を、私たちが必要と心配する必要はありません.jsローダー。
簡単に言えば、ES6モジュールでは、既存のAMDプラグイン/モジュールを使用する場合は、コンパイル済みファイルが既存のセットアップに準拠していることを確認するだけです。また、ES6モジュールバンドラRollupを試して、新しいES6ファイルをすべてバンドルすることもできます。
これは、プロジェクトでES6の構文を統合しようとしている人にとって役に立ちます。
"既存のAMDモジュールに依存しない新しいモジュールでのみ動作*" - なぜそう思うのですか?もしあなたがAMDにコンパイルし、requirejsを使ってモジュールをロードするなら、あなたはまだ普通の(コンパイルされていない)モジュールを必要とすることがあります。 – Bergi
はい、@ Bergiさんのように、ES2015モジュールをAMD以外のものにコンパイルする予定ですか? – JMM
私はES2015モジュールをAMDのみにコンパイルしたいと考えています。しかし、私が言及したように、ES2015モジュールにインポートしたいAMDモジュールがいくつかありますので、再度書き直すのではなく、それらを再利用することができます。 – coderC