Требуется конфигурация JS для jQuery - PullRequest
1 голос
/ 23 марта 2012

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

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

<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

});

В Fiddler я вижу, что корректный запрос modernizr выходит, но запрос для jQuery выходит для /Scripts/jquery.js.

В качестве теста я изменил мою строку modernizr на "modernizr" : "/N2/Resources/Js/modernizr-2.0.6-development-only", и я вижу, что запрос для этого ресурса выходит (конечно, он возвращает 404). Итак, я знаю, что RequireJS видит мою конфигурацию и обрабатывает ее.

ПРИМЕЧАНИЕ. Мне известны различные способы работы с jQuery в RequireJS. Все мои плагины определяют модули, поэтому загрузка по порядку не будет проблемой. Я использую jQuery 1.7, который поддерживает AMD.

1 Ответ

3 голосов
/ 23 марта 2012

Я понял это. В разметке в теле моей страницы у меня есть

<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/> в заголовке страницы, и теперь он работает.

...