관심있는 모듈은 외부 범위에 연결해야합니다. 기본적으로 Backbone, Underscore, jQuery 등은 noConflict()를 호출하지 않는 한 전역 범위에 연결되어 있습니다 (모든 모듈이이 점을 제공하지는 않습니다). 전역 범위에 모듈을 연결하는 것은 좋은 해결책은 아니지만 사용자가 요구하는 것을 성취 할 수 있으며 어쨌든 기본 동작입니다. 더 나은 대안은 명명 된 하위 모듈 외에도 종속성을 포함하는 외부 모듈 (또는 단지 require() 호출)을 정의하는 것입니다. 그렇지 않으면 RequireJS 사용에 대한 많은 이유가 없어집니다. 예를 들어
편집 : 동일한 파일에 명명 된 여러 모듈을 정의하는 경우
require(['underscore', 'backbone'],
function (_, Backbone) {
define('ModuleName', ['jquery'], function($){
$("div.someClass").addClass('hide'); // works
var Model = Backbone.Model.extend(); // works too
});
//Other modules here, otherwise this is pointless too
}
);
심지어이에만 유용합니다. 내 생각에 가장 좋은 솔루션은 불행히도 명시 적으로 모듈을 가져 와서 암시 적 모듈 명명을 허용하지만 위 예제는 사용자가 요구하는 것과 가장 가까운 예입니다. the RequireJS api docs에서 암시 모듈 이름에 관해서는 :
명시 적으로 모듈에게 자신의 이름을 수 있지만 적은 휴대용 모듈을 만드는 - 당신이 필요가 이름을 변경하는 것 다른 디렉토리에 파일을 이동합니다.
안녕하세요, 더 나은 대안을 보여줄 수 있습니까? 또는로드 된 모듈은 모든 deps의 객체/배열 만 반환합니까? –
물론, 나는 나의 대답을 편집했다. –