ASP.NET MVC 4でAngular JSを使用していて、cdnから読み込んでロードするスクリプトバンドルを使用していますそのようなCDNに障害が発生した場合にオリジンサーバ:角度依存性[angle-route、angular-resourceなど]がCDNフォールバックのためにロードされているかどうかを検出する
var jQuery = new ScriptBundle("~/bundles/scripts/jquery",
"//ajax.googleapis.com/ajax/libs/jquery/2.0.3/jquery.min.js") // CDN
.Include("~/Scripts/jquery-{version}.js"); // Local fallback
jQuery.CdnFallbackExpression = "window.jQuery"; // Test existence
bundles.Add(jQuery);
と
var angular = new ScriptBundle("~/bundles/scripts/angular",
"//ajax.googleapis.com/ajax/libs/angularjs/1.2.0-rc.2/angular.min.js")
.Include("~/Scripts/angular.js");
angular.CdnFallbackExpression = "window.angular";
bundles.Add(angular);
jQueryのかAngularJSはそれぞれwindow.jQueryとwindow.Angularを使用して存在するかどうかを検出するために非常に簡単です。 ASP.NETバンドルメカニズムは、元のサーバーにフォールバックする必要があるかどうかを確認するためにCdnFallbackExpressionテキストを評価します。
しかし、AngularJSのそれ以降のバージョンでは、ngRouteやngResourceなどの他のモジュールは、独自のファイルに分割されており、開発者の裁量で読み込まれます。
他のAngularJSモジュールがロードされているかどうかを検出するにはどうすればよいですか? ngAnimate、ngRoute、ngResourceなどがCDNからのロードに成功したかどうかをコンソールに入力するにはどうすればよいですか?
はたぶん 'angular.module( 'moduleNameの')'作品。モジュールが存在しない場合、例外がスローされることがありますが、それが正しい方法であるかどうかはわかりません。 – gustavohenke
@gustavohenke私はそれでおもしろかったですが、あなたは正しいです、注射器は怒ります。非常に怒っています。 –
'try..catch'ブロックでラップすることができたら、それはおそらくそれです:) – gustavohenke