2012-03-22 74 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