2013-09-03 4 views
0

Other Module Notes in requirejs.org.왜 이런 식으로 작성해야합니까?

define(["require", "./relative/name"], function(require) { 
    var mod = require("./relative/name"); 
}); 

또는 : 우리는 이런 모듈을 작성할 수

define(function(require) { 
    var mod = require("./relative/name"); 
}); 

을 그러나 왜 같이 쓸 수있다 : 첫 번째 파라미터가 배열로 주어지면

define(["./relative/name"], function(require) { 
    var mod = require("./relative/name"); 
}); 

답변

1

, 콜백이 실행되기 전에로드 할 모듈 목록을 포함합니다. 그런 다음 콜백 함수의 매개 변수는 해당 모듈에 대한 참조를 보유합니다.

그래서 첫 번째 예제를 보라 : 여기에이 모듈은 require./relative/name로드됩니다. 콜백은 매개 변수 require을 통해 첫 번째 매개 변수를 가져옵니다. 두 번째 인수는 인수로 전달되지만 명명 된 인수는 없습니다. 그러나 이미로드되었으므로 var mod = require("./relative/name");을 사용하여 콜백 내에서 참조를 얻을 수 있습니다. 1

두 번째 예로서 링크가이

이 양식 호출)합니다 (필요한 찾을 Function.prototype.toString()를 사용하고, 의존성 배열에 추가 할 프로그램을 나열 , "require"와 함께 사용되므로 코드가 상대 경로에서 올바르게 작동합니다.

그래서 실제로 기능을 분석 한 후 첫 번째 예제처럼 배열을 만들 종속성을 찾을 것이다 require.js.

마지막으로 (작동하지 않는) 예는 두 가지를 혼합하려고 시도합니다. 그러나 require.js의 관점에서 보면 다음과 같이 보일 것입니다. 하나의 의존성이 ./relative/name인데, 이는 require이라는 인수로 전달됩니다. 함수 내에서 동일한 모듈에 대한 다른 참조를 얻으려고하면이 시간은 mod입니다. 그래서 require.js에 대해서는 모든 것이 잘된 것처럼 보이지만, 여러분이 (실수로) 기대 하듯이, 하나의 모듈에 대한 참조 만 얻고 둘 다에 대한 참조는 얻지 못합니다.


1 모듈 (반드시 현재 모듈에 의해) 다른 호출에 의해 이전에로드 된 경우 var mod = require("./relative/name");를 사용하는 동기 모듈 로딩 만 작동 .

관련 문제