2016-10-17 3 views
1

저는 모든 scritps를 하나의 파일로 결합하는 requirejs (gulp-requirejs) 용 gulp.js 및 최적화 도구를 사용하고 있습니다. 나는 하나의 이름을 가진 모듈을 정의하지만 이름을 생성한다. 문제는 그 모듈을 다른 파일에서 호출하는 방법을 모른다는 것입니다. page1.js 예를 들어RequireJS : 옵티마이 저가 정의 모듈의 이름을 생성합니다.

:

... 
define("map",["jquery"],function($){ 
    ... 
}); 
define("lib", ["jquery"],function($){ 
    ... 
}); 

및 page2.js에

나는 LIB 모듈 page1.js를 호출하고 싶습니다하지만 난 그것을 할 방법 확실하지 않다? 최적화 도구가 이름을 설정하지 않았다면 코드가 작동하지만이 방법을 사용하면 어떻게 작동시키는 지 모릅니다. 어떤 아이디어?

답변

0

이러한 모듈의 이름이 지정되지 않은 한 단일 파일에서 여러 모듈을 사용할 수 없습니다. 그렇지 않으면 RequireJS는 모듈에 대한 요청을 모듈을 정의하는 실제 코드와 연관시키는 방법을 알 수 없습니다.

모든 모듈을 단일 번들로 최적화하는 일반적인 시나리오는 번들에 특정 모듈이 응용 프로그램의 진입 점 역할을 할 것이며, 그 모듈 이름을 paths : 당신이 하지이 단일 진입 점을 가지고 있지만 사실도 번들에 입니다로드 모듈을 시작합니다 번들 외부의 코드 이있을 수 있습니다 할 경우

require.config({ 
    paths: { 
    lib: 'path/to/page1', 
    } 
}); 

, 당신은 LIS 필요 t bundles에서 그 모듈 :

require.config({ 
    paths: { 
    lib: 'path/to/page1', 
    }, 
    bundles: { 
    lib: ['map', ...], 
    } 
}); 

제가 위에서 보여준 bundles 설정은 "당신이 map를라는 모듈을 볼 때, 모듈 lib를 가져, 당신은 map의 정의를해야합니다."본질적으로 말한다

+0

죄송합니다 내 page2.js 구성에서 번들을 사용하려고하면 정말 기본적인 것을 놓치고 있어야합니다. lib는 정의되지 않습니다. page1.js에 대한 설정에서 스크립트 및 종속성 (예 : jquery 등) 및 shim에 대한 모든 경로가 있는데 뭔가 빠졌습니까? 내가 뭘하려고하는지 당신이 첫 번째 시나리오에서 설명하는 것입니다 - lib 모듈입니다 단일 진입 점을 가지고하는 것입니다. – mddev

+0

마침내 docs를주의 깊게 읽은 후, page2.js에서 사용할 때 lib가 아닌 "map"이라고 부릅니다. 하지만 번들을 사용할 필요가없는 첫 번째 시나리오와 같은 단일 진입 점은 어떻게 가질 수 있습니까? – mddev

관련 문제