2014-07-22 2 views
0

backboneJS/requireJS를 사용하여 앱을 개발하고 있습니다. 저는 약 20 개의 뷰를 확인했으며, 모든 뷰에 대해 jquery, backbonejs 및 underscorejs를 사용하고 있습니다. 따라서 처음 세 가지 종속성은 항상이 세 가지입니다. 나는 모든 파일에 중복을 작성 피할 수 있도록RequireJS/BackboneJS app - 의존성 추가시 제안이 필요합니다.

define([ 
    'jquery', 
    'underscore', 
    'backbone', 
.... ], function($, _, Backbone, ..){ 
..... 

}); 

내가 모든 모듈에서이 세 가지를 포함로 이동하고 글로벌 수준에서 어딘가에 말할 수있는 방법이 있나요?

답변

1

몇 가지 방법이 있습니다.

myDefine = function(dependencies, callback) { 
    var defaults = ['jquery', 'underscore', 'backbone'], 
     combined = defaults.concat(dependencies); 

    return define(combined, callback); 
}; 

myDefine(['MyView'], function($, _, Backbone, MyView) { 
    // do stuff 
}); 

그러나 이것은 분명히 여전히 콜백 개체를 지정해야합니다 : 하나는 자신의 myDefine (또는 무엇이든)에 define을 래핑하는 것입니다. 따라서 더 좋은 옵션은 응용 프로그램 네임 스페이스에 $, _Backbone을 첨부하는 것입니다 (글로벌로 지정하지 않으려는 경우).

myDefine = function(dependencies, callback) { 
    var defaults = ['jquery', 'underscore', 'backbone']; 

    if (myApp.$ && myApp._ && myApp.Backbone) { 
    define(dependencies, callback); 
    } else { 
    require(defaults, function($, _, Backbone) { 
     myApp.$ = $; 
     myApp._ = _; 
     myApp.Backbone = Backbone; 
     define(dependencies, callback); 
    } 
    } 
}; 

myDefine(['MyView'], function(MyView) { 
    // use myApp.$, myApp._, myApp.Backbone 
}); 

당신이 네임 스페이스 지정에 대해 걱정하지 않는 경우

, 당신은 myApp 단계를 거치지 않고 위의 작업을 수행하고 libs와 window에 머물게 단지 수 : 그럼 당신이 뭔가를 할 수 있습니다.

위의 내용은 모두 테스트되지 않았습니다.

더 간단한 옵션은 jQuery, Underscore 및 Backbone을 모듈 앞에 동 기적으로로드하는 것입니다.

+0

감사합니다. Glortho! 나는 두 번째 제안을 따를 것이다. – Rethna

관련 문제