2013-05-01 4 views
2

requirejs도 사용하는 응용 프로그램에서 breezejs를로드하는 이상한 행동을하고 있습니다.requirejs를 사용할 때 Breeze에 녹아웃이 필요합니다.

주요 문제는 breeze (및 종속 항목 q 및 jquery)를로드해야하는 경우 breeze가 dependence로 설정되어 있지 않으면 breeze가로드되지 않습니다.

Uncaught Error: Module name "ko" has not been loaded yet for context: _. Use require([])

실제로 녹아웃을 사용하고 싶었지만 각도를 사용하고 있다면 괜찮습니다. 나는 그것이 녹아웃을로드하기 위해 아무것도 망가 뜨리지 않는다고 생각하지만, 결코 사용하지 않으면 다운로드 시간 낭비이다.

내 첫 번째 질문은 왜 requirejs를 사용하고 있기 때문에 breeze가 녹아웃을 필요로하는지입니다. 나 한테 버그 같아.

다른 이상한 동작 인 WRT breeze와 require는 require를 사용하지 않고 require를로드 한 다음 breeze를 실행하면 breeze가로드되지 않습니다.

Uncaught Error: Mismatched anonymous define() module...

breeze는 require가로드 된 경우 require에 의해로드 될 것이라고 가정합니다. 그러나 이것은 생각할 수있는 도약처럼 보입니다. 나는 이전 문제를 처음 발견 한 이래로이 문제에 부딪혔다. 나는 바람을 불어 넣을 필요가 있다고 생각하는 대신 바람을 불어 넣을 것이라고 생각했습니다. 물론, 애플 리케이션의 다른 부분은 요구에 의존 이후로 여전히로드 요구했다.

제 두 번째 질문은 왜 필요하기 전에 breeze를로드해야합니까? 두 도서관이 서로 의존하지 않기 때문에 이상하게 보입니다. 로드 순서가 필요한 이유는 무엇입니까? 바람 웹 사이트에서

답변

0

:

Breeze depends on one 3rd party JavaScript library, Q.js, which is included in the NuGet and download packages. Q.js is a popular implementation of the Common.js promises standard for managing asynchronous JavaScript.

이것은 당신이 Q.js를로드하는 경우가 AMD 로더의 단지 다른 구현이기 때문에 그것이 requirejs과 충돌 할 수 있음을 의미합니다. 또한

:

Except as noted, the other samples also require these libraries and they load the jQuery and Knockout scripts before the Q and Breeze scripts. Make sure you either follow their lead ... or know why you're doing it differently.

당신은 멀리 녹아웃없이 얻을 구성 할 수 있어야한다. 소스 코드에있는 내용은 다음과 같습니다.

가능한 옵션은 'ko', 'backingStore'또는 'backbone'입니다. breeze.config.initializeAdapterInstances 메소드를 참조하십시오. 이 도움이

http://www.breezejs.com/sites/all/apidocs/classes/config.html

희망.

업데이트 : breeze source을보고 있습니다. 필요한 로더가 있는지 확인하면 녹아웃을 'ko'로로드하려고 시도합니다. 아무것도 반환하지 않거나 false를 반환하는 자신 만의 'ko'모듈을 정의하여 requireJS 로더가이 문제를 해결하도록 구성 할 수 있습니다. 그런 다음 바람은 "backingStore"로 대체되며 불만을 제기해서는 안됩니다.

업데이트 (2013 년 5 월 20 일) : v.1.3.3 이후 버전에서 수정되었습니다. 임시 조언을 제공하는 this more recent S.O.을 참조하고 수정 사항을 발표합니다.

+0

Q는 AMD가 아니라 약속 된 기능을 제공합니다. 나는 Q와 요구 사이에 기능성이 겹치지 않는다고 생각한다. – steve

+0

'breeze.config.initializeAdapterInstance ("modelLibrary", "backingStore", true)'를 사용하여 조사했습니다.Breeze는 실제로 KO가 _로드되지 않은 경우 backingStore를 사용하도록 작성되었습니다. 이는 내가 원하는 것입니다. 문제는 내가 breeze를로드하는 데 require를 사용하면 KO를로드하지 않으면 breeze가로드되지 않는다는 것입니다. 설치 프로그램에서 KO를로드하고 backingStore를 사용하기 위해 breeze를 설정해야하는 경우 breeze는 원하는대로 작동합니다 (각도로). 이상한 점은 KO를로드하고 사용하지 않을 것입니다! – steve

+0

브리즈 소스를보고 있습니다 : https://github.com/IdeaBlade/Breeze/blob/master/Breeze.Client/Scripts/breeze.base.debug.js#L12728 로더가 필요한 경우, 로더가 존재하면 녹아웃을 'ko'로로드하십시오. 아무것도 반환하지 않거나 false를 반환하는 자신 만의 'ko'모듈을 정의하여 requireJS 로더가이 문제를 해결하도록 구성 할 수 있습니다. 그런 다음 바람은 "backingStore"로 대체되며 불만을 제기해서는 안됩니다. –

관련 문제