2012-05-11 3 views
0

동일한 기능 범위에서 정의 및 요구 사항을 모두 사용할 수 있는지 알고 싶습니다. 일반적으로 요구 또는 정의 중 하나입니다, 어떻게 동일한 범위에서 둘 다합니까?RequireJS - 동일한 기능 범위에서 정의 및 요구 모두 사용

define(["my/cart", "my/inventory"], 
    function(cart, inventory) { 
     //Define foo/title object in here. 
    } 
); 

require(["some/module", "a.js", "b.js"], function(someModule) { 
    //This function will be called when all the dependencies 
    //listed above are loaded. Note that this function could 
    //be called before the page is loaded. 
    //This callback is optional. 
}); 
+0

보통 '정의'를 명시 적으로 호출하지 않습니다. 'define'은 보통 그 모듈에 대한'require' 호출의 결과로서 실행됩니다. 따라서 당신은 코드 내에서 ([ "foo/title"])'을 요구할 것이고, 이것은 모듈을로드/정의하게 할 것이다. –

답변

3

define 기능은 AMD의 스타일을 사용하여 종속 모듈 "정의"에 대한, 그리고 require은 대부분 이전에 define 함수로 정의 된 모듈을 호출하는 데 사용됩니다.

파일 당 하나의 모듈 만 정의하는 것이 좋지만 모듈의 이름을 해당 함수의 첫 번째 인수로 전달하면 define을 두 개 이상 추가 할 수 있습니다.

당신은 당신이 require 전화 내부에 둥지 define 수있는 define 기능에 명시 적으로 이름을 전달하지만, require에 전달되는 모든 종속성이 빠를 인 직접 define에 전달 될 수 있기 때문에, 아무 의미가없는 경우 중첩이 내부에서 정의하는 것보다 명확합니다.

어쩌면하는 define 내부 중첩 require는 특정 조건 하에서 만 필요한 의존성이있는 모듈이 아마도 경우, 더 유용 할 수있다, 그것은 의미가 define 기능에 공통의 종속성을 추가 할 수 있도록하고, 더 많은 수 특정 조건문에 require이있는 특정 항목.

중요한 개념은 기본적으로 define은 AMD 모듈을 정의하기위한 것이며, require은이를 호출하기위한 것임을 이해해야합니다. (비 AMD 파일을 의존성으로 사용할 수 있지만 다른 문제입니다.)

+0

나는 그 필요성을 가지고있다. 일부 조건에 따라 모듈을로드하고 싶습니다. 의존성 삽입 같은 것. 그러나 나는 비동기 적 요구만을 발견했다. 내가 필요로하는 모듈을 동기식으로 얻을 수있는 방법이 있습니까? require ("moduleA")와 같지만 이전에로드 된 경우에만 작동합니다. – ccsakuweb