2012-01-07 3 views
2

나는 AMD에서 더 많은 것을 얻으려고하고 있으며, jQuery 소스에서 뭔가를 만난다. (그냥 파일의 끝 이전에 발견)jQuery 1.7+, AMD (RequireJS), Global Scope

여기

입니다 절 : 내가 무엇을 볼 수에서

if (typeof define === "function" && define.amd && define.amd.jQuery) { 
    define("jquery", [], function() { return jQuery; }); 
} 

, AMD의 주요 포인트 중 하나는 깨끗하고 글로벌 범위를 유지하는 것입니다. 그러나 jQuery는 자체 참조를 모듈로 반환하기를 선택하지만 여전히 전역 공간을 감염시킵니다.

"jQuery.noConflict();"를 추가하는 것이 나에게 보입니다. 반환 직전에이 문제가 해결되어 여전히 객체를 모듈로 반환합니다.

나는 RequireJS가 jQuery를위한 특별한 파일을 가지고 있다는 것을 알고 있지만, 1.7+에서 필요하다고 확신하지는 않는다.

은 내 질문이이 부분 입니다

:

1) 사람이 알고 있나요 왜이 결정을 찍은?

2)이 방법은 업그레이드가 용이하지 않으므로 표준 버전의 RequireJS 및 jQuery를 사용하는보다 세련된 솔루션에 익숙한 사람이 누구입니까?

+0

http://stackoverflow.com/questions/4858431/use-requirejs-and-jquery/9593868#9593868 –

답변

3

좋아, 그냥 게시 후, 난 그냥 깨달았다 나는 다른 파일을 통해 프록시를 수 :

//main.js 
require.config({ 
    paths : { 
    jquery : 'my/libs/jquery-1.7.1.min', 
    jQuery : 'my/src/jquery' 
} 

//my/src/jquery.js 

define([ 
     'jquery' 
    ], 
    function($) { 
     $.noConflict(true); 

     return $; 
    } 
); 

주 파일이 아닌위한 'JQuery와'별명의 이유 프록시에서 정규화 된 위치를 참조하는 것은이 별칭에 따라 달라지는 백본의 AMD 준비 분기를 사용하고 있기 때문입니다.

https://github.com/jrburke/backbone/blob/2b0cfb4282f071cffb14a9573d703da6acc5febd/backbone.js

저자는 Document Cloud에서 승인 한 일부 커밋을 가지고 있으며이 수정 작업이 또한 이루어지기를 바랍니다.

이 결함이 있는지 또는 AMD 테스트에서 추가로 해결할 수있는 대답이 있는지 테스트하는 것은 흥미로울 것입니다.

+0

이 설정으로 jQuery 플러그인을 어떻게 다루고 있습니까? 나는 그들이 글로벌 영역에서 $를 떠난 이유가 AMD를 위해 구축되지 않은 플러그인 (그들의 가장 큰 힘)의 라이브러리가 여전히 작동 할 것이라고 생각합니다. – nicholas

+1

$ 로컬 플러그인을 계속 사용할 수 있습니까? – ThomasReggi

+0

[비 AMD 라이브러리를위한 심 지원] (http://requirejs.org/docs/api.html#config-shim)을 보셨습니까? 이 질문이 원래 게시되었을 때 다시 사용할 수 없었습니다. 그래서 아마도이 기능이 그것을 할 것입니다. 그러나 나는 그것을 테스트하지 않았다. –