1. ホーム
  2. javascript

[解決済み] requirejsでjQueryプラグインをロード可能にする方法

2023-04-05 07:09:27

質問

私はrequirejs+jqueryで作業していますが、jQueryプラグインをrequireでうまく動作させるスマートな方法があるのかどうか疑問に思っていました。

例えば、私はjQuery-cookieを使用しています。私が正しく理解していれば、jquery-cookie.jsと呼ばれるファイルを作成し、内部で次のことを行うことができます。

define(["jquery"], // Require jquery
       function($){
// Put here the plugin code. 
// No need to return anything as we are augmenting the jQuery object
});
requirejs.config( {
    "shim": {
        "jquery-cookie"  : ["jquery"]
    }
} );

jQueryがやっているようなことができないかなぁと思い、こんな感じです。

if ( typeof define === "function" && define.amd && define.amd.jQuery ) {
    define( "jquery", [], function () { return jQuery; } );
}

あるいは、jQueryプラグインをrequirejsやあらゆるamdと互換性を持たせる唯一の方法であるならば、これは

どのように解決するのですか?

どちらか一方を実行するだけです。

define(["jquery"], // Require jquery
       function($){
// Put here the plugin code. 
// No need to return anything as we are augmenting the jQuery object
});

をjquery-cookie.jsの末尾に記述するか、あるいは

requirejs.config( {
    "shim": {
        "jquery-cookie"  : ["jquery"]
    }
} );

jquery-cookieをインクルードする前の任意の場所(例えばdata-mainが指す場所など)。

あなたが投稿した最後のコードブロックは、再配布され、AMD環境にあるかどうかわからないjQueryのようなものに適しています。理想的には、すべての jQuery プラグインはすでにこれを設定しています。

私は、インクルードされたライブラリを可能な限り無垢のままにしておきたいので ページごとに一度、グローバルな shim 設定を行うのが、私にとって最もクリーンなソリューションのように思えます。 . そうすれば、アップグレードがより安全になり、CDN が可能になります。