2016-06-30 6 views
0

私はRequireJSに大きな問題があります。私はプラグインを書きましたが、プラグインはうまくいきます。それにdefineを使用しません。私はrequirejs(["myplugin!path..."]...を使用する場合、それは完璧に動作します:Requirejsプラグインがshim/deps/pathsで動作しない

requirejs.config({ 
    baseUrl: "/", 
    paths: { 
     "myplugin" : "path to plugin code ..." 
    } 
}); 
requirejs(["myplugin!path..."], function (something) { 
    //works perfectly 
}); 

だからここでの問題はありますか?

その方法のRequireJSに
requirejs.config({ 
    baseUrl: "/", 
    paths: { 
     "myplugin" : "path to plugin code ...", 
     "loadWithPlugin": "myplugin!path..." 
    } 
}); 
requirejs(["loadWithPlugin"], function (something) { 
    //Ignores the plugin totaly... 
}); 

プラグインを無視します:私のようなrequirejs設定を使用しようとすると問題があります。つまり、shimdepsmapと異なるバージョンなどでは使用できません。

どうすればこの問題を解決できますか?

答えて

0

plugin!moduleの構文は、モジュール名として意味があります。ただし、pathsの設定ではモジュール名がのパスにマップされ、パスはモジュール名ではありません。したがって、値をpathsに設定すると、!より前のテキストはプラグインとして解釈されません。

代わりにmapを使用できます。モジュール名をモジュール名にマッピングします。例はfooに解決myPlugin!moduleA

require.config({ 
    baseUrl: "js", 
    paths: { 
     myPlugin: "lib/myPlugin", 
    }, 
    map: { 
     "*": { 
     foo: "myPlugin!moduleA", 
     }, 
    } 
    }); 

    require(["foo"], function (q) { 
    console.log("Q"); 
    }); 
+0

1stあなたが示唆したように動作しません。それはプラグインを受け入れる!直接URLでのみ。これは、あなたがそれだけでそれを使うことができれば、プラグインバルーンから空気を取り除くと思います。 –

+0

私は示唆したように働いています。私はここに投稿する前に完全にコードをテストしました。 – Louis

+0

2.2.0の代わりにバージョン2.0.2を使用したので、マップで動作しませんでした。とりあえずありがとう、 –

関連する問題