【发布时间】:2013-09-14 22:12:21
【问题描述】:
我在 ASP.NET MVC 4 上使用 Angular JS,我使用脚本包从 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);
分别使用 window.jQuery 和 window.Angular 很容易检测 jQuery 或 AngularJS 是否存在。 ASP.NET 捆绑机制评估 CdnFallbackExpression 文本以查看它是否需要回退到源服务器。
但是,在更高版本的 AngularJS 中,其他模块(例如 ngRoute 和 ngResource)被分离到自己的文件中,由开发人员自行决定加载。
如何检测是否加载了其他 AngularJS 模块?我可以在控制台输入什么来查看 ngAnimate、ngRoute、ngResource 等是否成功从 CDN 加载?
【问题讨论】:
-
也许
angular.module('moduleName')有效。如果模块不存在,它可能会抛出异常,但我不确定这是否是正确的做法。 -
@gustavohenke 我在玩这个,但你是对的,喷油器生气了。很生气。
-
如果你可以把它包装在一个
try..catch块中,也许就是这样:) -
使用 require.js 和 Angular 加载器
标签: javascript angularjs cdn fallback