2014-10-24 1 views
4

모듈 정의가 어떻게 작동하는지 궁금합니다. 예를 든다면 더 좋습니다.Requirejs modules redefinition

define("somemodule", [], function() {return "foo";}) 
define("somemodule", [], function() {return "bar";}) 
require(["somemodule"], function (module) {console.log(module)}) 

그것은 반환합니다 : 같은 이름을 가진 두 개의 모듈을 차례로 정의 된 경우

, 두 번째 정의가 작동하지 않습니다

> "foo" 

을하지만 우리는 모듈 후를 호출하는 경우 첫 번째 정의, 두 번째 모듈은 첫 번째 정의를 다시 정의합니다.

define("somemodule", [], function() {return "foo";}) 
require(["somemodule"], function (module) {console.log(module)}) 
define("somemodule", [], function() {return "bar";}) 
require(["somemodule"], function (module) {console.log(module)}) 

반환 :

> "foo" 
> "bar" 

왜 이런 방식으로 작동합니까? 사실 나는 모듈 재정의를 전혀 막을 수있는 가능성을 찾고 있습니다. 즉, 항상 "foo"를 반환하려면 위의 코드가 필요합니다.

+0

두 번째 예제를 Firefox에로드 한 페이지에 두 번째 예제를 잘라내어 붙여 넣으면 'foo'가 두 번 나타납니다. 이는 예상했던 것과 같습니다. 다른 말로 표현하면 문제를 재현 할 수 없습니다. 최신 버전의 RequireJS를 사용하고 있는지 확인하십시오 (2.1.15는 작성 당시 최신 버전 임). – Louis

+0

@ 루이스 그래, 문제는 내가 구형 버전 (2.0.6)을 사용하고 있다는 것이었다. 도와 주셔서 감사합니다! –

답변

3

requirejs 2.0.6을 사용하고있었습니다. 이 문제는 requirejs 2.1.15에서 재현되지 않습니다. 해결!