コードの一部を AMD モジュールとして配布したいと考えています。このモジュールは、2 つの jQuery プラグインを使用する noConflict モードの jQuery に依存しています。
ユーザーが単一のモジュール ファイルを要求するだけでモジュールを使用できるようにし (モジュールはサーバーでホストされます)、依存関係を処理できるようにしたいと考えています。ただし、依存関係を適切にロードするには、呼び出す必要require.config()
があり、呼び出し元のスクリプトではなく、Web ページに関連するモジュール パスがあるようです。paths
構成を使用して、すべてのパスを絶対にすることができます。これにより、依存関係の問題は解決されますが、本番サーバー以外の場所でのテストは悪夢になります。
より具体的には、モジュール ファイルは大まかに次のようになります。
define (['./jquery-wrapper'], function ($) {
...
return module;
});
そして、jquery-wrapper.js
同じディレクトリ内のファイルは次のようになります。
require.config ({
paths: {
'jquery-original': '//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min',
// ^ naturally, this one has to be absolute
},
shim: {
'jquery-original': {
exports: '$',
},
'../plugin/js/jquery.nouislider.min': {
// ^ this path is relative to the web page, not to the module
deps: ['jquery-original'],
},
'../plugin/js/jquery.ie.cors': {
// ^ this path is relative to the web page, not to the module
deps: ['jquery-original'],
},
},
});
define (['jquery-original', './jquery.nouislider.min', './jquery.ie.cors'], function ($, slider, cors) {
// ^ these paths are relative to the module
console.log ('types: ' + typeof slider + typeof $.noUiSlider + typeof cors);
return $.noConflict (true);
});
どこでもモジュールへの相対パスを使用できる方法はありますか?