2012-03-22 2 views
1

다른 사이트에있는 /Scripts 폴더보다 jQuery를 사이트의 다른 폴더에서로드하도록 RequireJS를 구성하려고합니다. Fiddler를 사용하여 페이지로드를 지켜보고 있는데 jQuery 요청이 올바른 URL 대신 /Scripts/jquery.js으로 나왔습니다. 내 마크 업에서jQuery에 대한 JJ 구성

, 나는이있다 :

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 

}); 

피들러, 나는 올바른 모더 나이저 요청 나가서 볼 수 있지만, jQuery를 요청 간다 : /Scripts/main.js에서

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

을 나는이 있습니다 /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 종속성을 제거하면 페이지가 제대로로드됩니다. 문제는 내 설정을 main.js에 넣는 것 같습니다.이 설정은 비동기 적으로 require.js에 의해로드됩니다. main.js이로드되기 전에 위의 스크립트가 본문에서 발견되어 jQuery에 대한 요청이 구성된 위치가 아닌 기본 위치로 이동합니다.

구성 설정을 페이지 헤드의 <script/> 태그로 옮겼습니다. 이제 작동합니다.

+0

답변을 수락하십시오, 하하. – theblang

관련 문제