8

特定のスクリプトが現在RequireJSによってロードされているかどうかを確実に検出する方法があるかどうかを調査しています。一般的にAMDモジュールの答えはさらに良いでしょうが、私のユースケースはRequireJSのみです.

jQuery およびその他のライブラリは、次のように「検出」します。

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

ほとんどの場合、これで十分ですが、問題は、スクリプトが AMD モジュールとしてロードされているかどうかを検出せず、define存在するかどうかのみを検出し、AMD 仕様をサポートしていることです。

RequireJS または一般的な AMD モジュールのいずれかを使用して、スクリプトがモジュールとしてロードされているかどうかを (実際に) 判断する方法はありますか?

4

1 に答える 1

4

specified()を見てください:

parentRequire.specified(moduleName): モジュールが既に要求されているか、ロード中である場合に true を返し、ある時点で使用可能になるはずです。

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

ここで問題になるのは、ユーザーの設定によって異なる可能性があるため、モジュール名を取得する方法です。そのための特別なモジュールがありますが、それはすでに定義呼び出しを行っている場合にのみ機能します。Requirejs の開発者であるjrburkeに連絡することをお勧めします。

于 2013-08-06T16:44:29.590 に答える