google CDN中jQuery UI的回退

google CDN中jQuery UI的回退,jquery,performance,cdn,Jquery,Performance,Cdn,如果从Google CDN获取JQuery失败,Html5样板使用以下技巧回退到本地存储的JQuery: <script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script> !window.jQuery&&document.write(unescape(“%3Cscript src=”j

如果从Google CDN获取JQuery失败,Html5样板使用以下技巧回退到本地存储的JQuery:

<script>!window.jQuery && document.write(unescape('%3Cscript src="js/libs/jquery-1.4.2.js"%3E%3C/script%3E'))</script>
!window.jQuery&&document.write(unescape(“%3Cscript src=”js/libs/jQuery-1.4.2.js”%3E%3C/script%3E'))
您将如何实现这个技巧来为jQuery UI执行相同的技巧?

!window.jQuery.ui&&document.write(unescape(“%3Cscript src=”jQuery ui lib的路径”))
<script type="text/javascript">!window.jQuery.ui && document.write(unescape('%3Cscript src="path to jquery UI lib'))</script>
在jQuery本身的回退之后执行此操作

或者(如果你不喜欢的话!)

(window.jQuery.ui===/*注意===*/未定义)和&document.write(/*…*/)
我是这样做的:

<script src="//ajax.googleapis.com/ajax/libs/jquery/1.10.2/jquery.min.js"></script>
<script>window.jQuery || document.write('<script src="/static/js/jquery.min.js"><\/script>')</script>


<script src="//ajax.googleapis.com/ajax/libs/jqueryui/1.10.3/jquery-ui.min.js"></script>
<script>window.jQuery.ui || document.write('<script src="/static/js/jquery-ui.min.js"><\/script>')</script>

window.jQuery | | document.write(“”)
window.jQuery.ui | | document.write(“”)

使用ASP.NET Web优化框架

当您使用捆绑包时,更容易做到这一点

从NuGet获取Microsoft.AspNet.Web.Optimization包。 现在,在BundleConfig中,您可以将捆绑包设置为不仅包括CdnPath,还包括CdnFallbackExpression:

public static void RegisterBundles(BundleCollection bundles)
{
    bundles.UseCdn = true;
    BundleTable.EnableOptimizations = true;     
    var jquery = new ScriptBundle("~/bundles/jquery", "//ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js").Include(
            "~/Scripts/jquery-{version}.js");
    jquery.CdnFallbackExpression = "window.jQuery";
    bundles.Add(jquery);
    //...
}

所以这应该和任何插件的工作方式一样。很棒!应该。如果你不喜欢!你还可以测试window.jQuery.ui是否未定义。
public static void RegisterBundles(BundleCollection bundles)
{
    bundles.UseCdn = true;
    BundleTable.EnableOptimizations = true;     
    var jquery = new ScriptBundle("~/bundles/jquery", "//ajax.aspnetcdn.com/ajax/jquery/jquery-2.0.0.min.js").Include(
            "~/Scripts/jquery-{version}.js");
    jquery.CdnFallbackExpression = "window.jQuery";
    bundles.Add(jquery);
    //...
}