2013-01-17 2 views
1

최적화 레이어가없는 RequireJS을 사용하는 응용 프로그램을 개발했습니다. - 각 파일을 개별적으로 다운로드해야합니다. 다음은 바깥 쪽 마크 업입니다.최적화 (r.js)에서 crossroads.js를 사용하여 설정해야합니다.

<!DOCTYPE html> 
<html lang="en"> 
    <head> 
    <script type="text/javascript"> 
     var require = { 
     //some basic config 
     }; 
    </script> 
    </head> 
    <body> 
    <!--snip--> 
    </body> 
    <script type="text/javascript" data-main="main" src="scripts/lib/require.min.js"></script> 
</html> 

이 기능은 아무 문제없이 작동하지만 100 개 이상의 파일을 사용하면로드 시간이 실제로 증가합니다. 그래서, 소개 시간은 r.js optimization! 나는 노드와 r.js를 사용하여 결합 된 파일을 만들고 data-main="main"data-main="_build/main"으로 변경합니다.

나는 다음과 같은 오류가 발생합니다 :

Error: Mismatched anonymous define() module: (the entire body of crossroads.js)

생각을 :

  • no manual/out-of-band define() calls or anonymous modules을있다. 모든 것이 최적화 프로그램을 통해이 하나의 파일로 이동합니다.
  • 이것은 우리 파일조차도 아니며, -입니다. Require는 옵티 마이저가 관련되지 않은 경우 잘 처리 할 수 ​​있습니다.

아직 파고 있지만, 누군가가 나를 여기에서 구할 수 있기를 바란다.

+0

교차로는 이름없는 정의를 사용합니다. 어떻게로드/묶는 중입니까? 그것을 가리키는 "경로"설정을 지정 했습니까? 또한 r.js 빌드를 수행하면 디버깅에 도움이되고 변경 사항을 쉽게 추적 할 수 있으므로 축소 된 dist 파일이 아닌 소스 파일을 사용합니다. –

+0

@MillerMedeiros 예, 경로 멤버 '교차로'가 있습니다. 'lib/crossroads' –

답변

1

TL; crossroads.js의 축소되지 않은 버전을 사용하십시오. r.js 빌드를 수행 중이므로 이미 소스 파일을 압축합니다.

교차로는 명명되지 않은 정의를 사용하며 사용자 정의 UMD (범용 모듈 정의)으로 래핑됩니다. r.js가 적절한 모듈 이름을 추가 할 수 없으므로 축소 된 버전은 제대로 작동하지 않습니다. 축소를 이전

:

(function(define){define(["signals"], ... 

축소를 후 :

(function(a){a(["signals"], ... 

r.js 무엇 a 방법을 알아낼 수 없습니다, 그것은 단지 define 호출을 찾습니다.

+0

Aha! 물론, 나는 바보가된다. 감사! –

+1

FIY [email protected]에는이 문제가 없습니다. 단지 그것을 github과 npm으로 밀었습니다. 건배. –