2017-02-17 17 views

答えて

0

はによって提供さdefine機能を区別しやすくするために行われているが任意の古いものからのAMDローダーdefine複数のロードのシナリオを処理するコードの典型的なパターンはこれです:

if (typeof define === 'function' && define.amd) { 
    define(['exports'], factory(exports)); 
} else if (typeof module === 'object' && module.exports) { 
    factory(module.exports); 
} else { 
    factory(exports); 
} 

1行目には、可能なAMDローダーを持ち、かつ存在する場合AMDローダーを使用するかどうかをチェックします。 define関数が存在していても、amdプロパティが設定されていない場合、それはいくつかのランダムな外部のdefineです。

名前defineはかなり一般的です。 amdプロパティでなければ、実際に存在するものが実際に存在するかどうかを判断することが困難な場合があります。


{ jQuery: true }に設定することは歴史的な成果物です。それを説明するpull request to jQueryがあります。要求の作成者はRequireJSの作成者です。簡単に言えば、AMDローダが複数のバージョンのjQueryがdefineを呼び出すケースを処理できることを示すことが目的でした。 define.amd.jQueryが真実だった場合に限り、jQueryはdefineを呼び出します。これはおそらく、以前はいくつかのバージョンのjQueryで使用されていましたが、新しいバージョンではこのフラグは使用されないため、主に古いjQueryバージョンをサポートしています。

関連する問題