我在ASP.NET MVC 4上使用Angular JS,我使用腳本包來從CDN加載,也加載在CDN失效的情況下,原始服務器,像這樣:檢測角度依賴關係[角度路由,角度資源等]加載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( '模塊名')'的作品。如果模塊不存在,它可能會拋出異常,但我不確定這是否是正確的方式。 – gustavohenke
@gustavohenke我正在玩弄,但你說的對,注射器很生氣。很生氣。 –
如果你可以將它封裝在'try..catch'塊中,也許這就是:) – gustavohenke