2014-01-25 2 views
1

이것은 매우 쉽습니다. 내가 jQuery의 충돌이없는 버전을 사용하고있는 나의 필요 모듈에 트위터의 부트 스트랩 플러그인의 AMD 버전을로드하려고한다. (레거시 코드에 다른 jquery 객체가 있기 때문에 충돌이없는 버전이 필요하다.)requirejs no-conflict jquery 객체 수정하기

그러나 AMD 정의가 필요한 모듈의 충돌없는 jquery 객체에 메소드를 추가하기 위해 AMD 플러그인을 사용할 수 없습니다. 어느 누구도 제가 잘못하고있는 것을 생각하고 있습니까? 그것이 분명해야하는 것처럼 보입니다.

AMD 부트 스트랩 모듈은 여기에서 나온 : https://github.com/clexit/bootstrap-amd

여기 내 코드입니다.

require.config({ 
    map: { 

     '*': { 'jquery': 'jquery-private' }, 
     'jquery-private': { 'jquery': 'jquery' } 
    },  
    paths : { 
     jquery : '../bower_components/jquery/jquery', 
     underscore : '../bower_components/underscore/underscore', 
     backbone : '../bower_components/backbone-amd/backbone', 
     marionette : '../bower_components/marionette/lib/core/amd/backbone.marionette', 
        'backbone.wreqr' : '../bower_components/backbone.wreqr/lib/amd/backbone.wreqr', 
        'backbone.babysitter' : '../bower_components/backbone.babysitter/lib/amd/backbone.babysitter', 
        'localstorage' : '../bower_components/backbone.localStorage/backbone.localStorage', 
     handlebars : '../bower_components/handlebars/handlebars', 
     text: '../bower_components/requirejs-text/text', 
     hb: '../bower_components/requirejs-handlebars/hb', 
     bootstrap: '../bower_components/bootstrap/amd' 
    }, 
    shim : { 
     underscore : { 
      exports : '_' 
     }, 
     handlebars: { 
      exports: 'Handlebars' 
     } 
    } 
}); 

require(['jquery', 'bootstrap'],function($){ 
    console.log($); 
    $('#MainRegion').modal(); 
}); 

답변

2

나는 demonstrates하는 방법을 github에있는 저장소가 있습니다. 이 데모에서는

, 나는 JQuery와 같이 1.8.3로드 :

<script type="text/javascript" src="js/jquery-1.8.3.min.js"></script> 

그리고 내가 가지고있는 RequireJS로드 jQuery를 1.10.2 : 당신이하지 않았다 내가 당신의 구성에서 알

require.config({ 
     baseUrl: "./js", 
     paths: { 
      jquery: 'jquery-1.10.2' 
     }, 
     packages: [ 
      { name: "bootstrap", location: "../bootstrap/amd" } 
     ], 
     map: { 
      '*': { 'jquery': 'jquery-private' }, 
      'jquery-private': { 'jquery': 'jquery' } 
     }, 
    }); 

packages 옵션을 사용하면 RequireJS가 부트 스트랩로드에 실패하게됩니다. map rigmarole은 다른 질문에서 설명한 내용이며 here에 설명되어 있습니다.

그리고 나는이 코드를 테스트 할 수 있습니다 : 모달가 표시하는

console.log("Non-AMD version of jQuery", $.fn.jquery, $.fn.modal); 
    require(["jquery", "bootstrap"], function ($) { 
     console.log("AMD version of jQuery", $.fn.jquery, $.fn.modal); 
     $(".modal").modal(); 
    }); 

데모의 index.html 파일이 필요한 발판이 포함되어 있습니다. Bootstrap이 RequireJS에 의해로드 된 jQuery 버전에 자체적으로 설치되었음을 증명하는 모달이 표시됩니다.

+0

작동. :) jquery-private 모듈에 jq 객체를 반환하는 대신 $ 대신에 충돌 메서드를 적용했습니다. 처음부터 내 문제의 일부가되었을 수 있습니다. 고마워 루이스. 감사합니다. –

관련 문제