3

アプリケーションでモジュールなどの ES6 機能を使用することに多くの価値があると感じているため、JSPM を試しており、結果としてシステム JS を試しています。ただし、CJS と AMD を同時に使用してモジュールを管理できるようにしたいと考えています。CJS モジュールと ES6 モジュールを読み込んで実行しようとしているメイン アプリ ファイルのコードの例を次に示します。

//CJS
var cjsmodule = require('./modules/cjs-module');
var cjs = cjsmodule();
cjs.init();

//ES6
import { square } from './modules/es6-module';
console.log(square(11));

しかし、私はエラーが発生します

Potentially unhandled rejection [2] TypeError: require is not a function 

1 つの方法だけを使用すると、アプリケーションはエラーなしで実行されます。JSPM を使用して、ES6、CJS、および AMD を同じアプリケーションに共存させることが可能かどうかを知っている人はいますか?

それができない場合、3 つのアプローチすべてを同時にサポートする代替モジュール ローダー ライブラリを推奨できる人はいますか?

4

1 に答える 1

0

これは古い質問ですが、異なるモジュール スタイルのパッケージをいくつか使用する方法を理解しようとしているときに見つけました。うまくいけば、この答えは誰かの時間を節約します。

JSPM は、CommonJS、AMD、ECMA2016 モジュール、グローバルなど、さまざまな形式のパッケージを処理できます。パッケージをインストールするときに、オーバーライドを指定して、パッケージのロード方法を JSPM に伝えることができます。たとえばjspm install npm:your-mad-package-name-here -o "{format: 'cjs|amd|esm|global'}"、一重引用符で囲まれた値は、パッケージの依存関係の種類に対応します。パッケージによって公開された型を使用するには、それらをインポートするだけです。import typeNameHere from "your-amd-package-name-here";ここで、typeNameHere はデフォルトまたはエクスポートされた型に対応します。(モジュールの種類、公開されているもの、使用したいものによっては、何をインポートするかについて少し学習曲線が必要になる場合があります。)

于 2016-06-25T03:30:44.233 に答える