2014-01-16 2 views
1

필자는 몇 개의 전역 변수 (jQuery + 플러그인, 생성자 함수 등)의 빌드 된 라이브러리 (연결, 축소 및 require.js 이전에 포함)를 보유하고 있습니다. 이 라이브러리는 앱이 위에 빌드 된 기반으로 사용되며, 종속성은 가정됩니다. 라이브러리 뒤에 앱 스크립트를 포함하면 문제없이 jQuery와 생성자를 자유롭게 사용할 수 있습니다.기존 전역 변수가있는 requirejs

큰 응용 프로그램의 경우이 내장 라이브러리를 사용하면서 requirejs (응용 프로그램 내 다른 모듈을 관리하기 위해)를 사용할 것을 고려하고 있습니다. jQuery와 같은 기존 전역을 필요로하는 종속성 목록에 어떻게 추가 할 수 있습니까?

<script src="pathto/lib.js" type="text/javascript"></script> 
<script src="require.js" data-main="../js/app" type="text/javascript"></script> 

requirejs.config({ 
    shim: { 
    'jquery': { 
     exports: '$' 
    } 
    }, 
    // jQuery is already loaded with lib.js, no need for any path... 
    path : { 
    jquery : 'jquery.js' 
    } 
}); 

이것이 가능합니까? 또는 lib/js가 require/the app js 앞에 포함 되었기 때문에 특정 전역 변수가 앱 모듈 내에 존재할 것이라는 가정을 계속해야합니까?

lib.js를로드하는 데 require를 사용하는 것은 CMS의 일부이므로 불가능합니다.

- 편집 -

무엇 lib 디렉토리 내용이 어쨌든 앉아 곳이기 때문에, 명명 된 모듈을 사용하여, 그냥 전역 객체에 대한 핸들을 반환에 대해?

define("lib", function() { 
    return this; 
}); 

require(["lib"], function (lib) { 
    // use existing globals found in lib via 
    lib.jQuery 
    // or simply 
    jQuery 
}); 

이렇게하면 가정 할 필요없이 종속성을 명명하는 require() 규칙을 따를 수 있습니다. 내 경로 구성이 경우이

path: { 
    'jquery': '//path/to/the/cdn' 
} 

처럼 보이는, 그래서 내가하는 CDN에서 jQuery를로드 내 프로젝트에 대한 정확한 같은 일을하고 있어요

답변

0

, 당신이 업데이트로 당신이해야한다고 생각 (정의 그런 다음 일부 타사 라이브러리에서는 종속성으로 jquery을 정의 할 수 있기 때문에 반환해야합니다. RequireJS 구성에 jquery이없는 경우 타사 라이브러리의 소스 코드를 수정해야합니다.

관련 문제