2012-03-22 75 views
1

我试图配置RequireJS从我的网站上的另一个文件夹加载jQuery,而不是其他所有文件夹的/Scripts文件夹。我正在用Fiddler观看页面加载,并且我总是看到jQuery请求会出现在/Scripts/jquery.js而不是正确的URL。jQuery的RequireJS配置

在我的标记,我有这样的:

<script src="@Url.Content("~/Scripts/require.js")" type="text/javascript" data-main="@Url.Content("~/Scripts/main")"></script> 

/Scripts/main.js我有这样的:

require.config({ 
    waitSeconds: 10, 
    paths: { 
     "jquery": "/N2/Resources/Js/jquery-1.7", 
     "modernizr": "modernizr-2.0.6-development-only" 
    } 
}); 

require(["jquery", "jquery.utility", "jquery.link-decorators", "jquery.google-analytics", "accessibility", "modernizr"], function ($) { 

... omitted 

}); 

在提琴手,我看到正确的Modernizr要求出去,但jQuery的要求去为/Scripts/jquery.js

作为一项测试,我将我的modernizr行更改为"modernizr" : "/N2/Resources/Js/modernizr-2.0.6-development-only",并且我看到请求发送给该资源(当然它返回404)。所以我知道RequireJS看到我的配置,并正在处理它。

注意:我知道在RequireJS中处理jQuery的各种方法。我的所有插件都定义了模块,所以乱序加载不会成为问题。我正在使用jQuery 1.7,这是AMD的意识。

回答

3

我想通了。在我的页面的主体标记,我有

<script type="text/javascript"> 
require(["jquery", "Rotator"], function ($, Rotator) { 
    $(document).ready(function() { 
     var homeRotator = new Rotator(); 
     homeRotator.initialize($('#home-rotator ul.rotator-content li'), { viewTime: 30000, transitionTime: 2500 }); 
    }); 
}); 

这是什么导致了/Scripts/jquery请求。 Rotator模块取决于jquery。如果我在这里删除jquery依赖项,页面会正确加载。问题似乎是我将我的require.config设置放入main.js,这是由require.js异步加载的。在加载main.js之前,正文中会遇到上面的脚本,因此对jQuery的请求会转到默认位置,而不是配置的位置。

我将我的配置设置移动到页头中的<script/>标签,现在它正在工作。

+0

接受你的答案,哈哈。 – theblang 2012-12-12 00:52:41