2012-03-22 3 views
1

Я пытаюсь настроить RequireJS для загрузки jQuery из другой папки на моем сайте, чем в папку /Scripts, где все остальное. Я смотрю загрузку страницы с помощью Fiddler, и я всегда вижу, что запрос jQuery выходит за /Scripts/jquery.js вместо правильного URL.Конфигурация RequireJS для jQuery

В моей разметке, у меня есть это:

<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 видит мою конфигурацию и обрабатывает ее.

ПРИМЕЧАНИЕ. Я знаю о различных способах работы с jQuery в RequireJS. Все мои плагины определяют модули, поэтому загрузка не по заказу не будет проблемой. Я использую 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