0

コードの一部を 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);
});     

どこでもモジュールへの相対パスを使用できる方法はありますか?

4

1 に答える 1