requirejs 빌드 스크립트
문제
다음과 같은 코드가 있습니다
define("ModuleA", ["InitialDependency"], function (initDep){
return {};
});
define("ModuleB", ["ModuleA", "OtherDependency"], function (moduleA, otherDep){
return {};
});
.
각 모듈 각각은 "modulea.js", "moduleb.js", "initialdependency.js"및 "otherDependency.js"로 정의됩니다.
이 모듈은 내 응용 프로그램에서 순차적으로로드됩니다. ModuleB는 항상 모듈리 후로드됩니다. 즉, 최적화 단계에서는 모듈러의 스크립트를 ModuleB 용 스크립트에서 결합하지 않으려고합니다. 나는 다음과 같은 를 원한다
modulea.built.js는 를 포함합니다
- 초기화
- modulea
moduleb.built.js는 를 포함합니다
- 상대방
- moduleb
i 그러나 모듈이로드되지 않을 수 있으므로 동일한 파일에서 모두를 원하지 않습니다.
두 모듈 모두에 대한 빌드 스크립트를 수행 할 수 있지만 프로젝트에 몇 가지 모듈이 훨씬 많아서 시간이 많이 걸릴 수 있습니다.
이 두 모듈을 모두 구축하기위한 빌드 스크립트를 만들려면 무엇을 알아야합니까? 동일한 종속성 패턴을 따르십시오.
해결책
이를 달성하려면 modules
구성 옵션을 사용하여 재생해야합니다.
다음과 같이 보일 수 있습니다 :
{
modules: [
{
name: "ModuleA",
include: [],
exclude: []
},
{
name: "ModuleB",
exclude: [
"moduleA"
]
}
]
}
.
여기에 James가 유사한 예제 설정이 있습니다 : https://github.com/requirejs/example-multipage
물론 이러한 모듈을 별도로 구축함으로써 경로를 업데이트해야 할 수 있습니다. 그렇다면 가장 좋은 방법은 Builded 앱에 대한 특별한 설정을 사용하여 require.config
호출을 포함하고 일반적인 앱 대신이 구성을 포함 하여이 구성을 포함하는 파일을 작성하는 것입니다. 그러나 당신이 좋은 분리 된 방식으로 종속성을 설정하면 아마 괜찮을 것입니다. "좋은 분리 된"방법으로, moduleA
가 기본 스크립트 인 경우, moduleB
로 포장 된 종속성이 없어야합니다. 그러나 이것은 상식이라고 생각합니다!
shimmed modules 정보 : Shimmed config 만 작업 WHE 파일이로드되고 R.JS가 주문 플러그인을 주문하는 경우, 귀하가 종속성 없이는 Shim 모듈을 포함하지 않도록하십시오. 100 % 확실하지 않은 것들이 전에로드 될 것입니다. 자세한 정보는 다음과 같습니다 : https://github.com/requirejs/example-multipage-shim
이 도움이되기를 바랍니다!