2012-03-05 3 views
1

Yahoo User Interface 최신 버전을 사용하고 있습니다.YUI 모듈로드 및 연결 이해

나는 YUI global 개체의 문서를보고 있는데 몇 가지 질문이 있습니다.

언제 모듈이로드되고 언제 특정 인스턴스에 연결되는지 알고 싶습니다.

var Y = YUI(); 

Y.use('node', 'event', function (Y) { 
}); 

당신은 여전히 ​​두 경우 모두에 Y를 통과 할 것 :

YUI().use('calendar', function (Y) { 

    // I assume that when we are here that the calendar module has been loaded? 

    // But when is it attached to this instance of YUI? 

}); 

방법은 첫 번째 인스턴스는 다음과 같이 선언 된 경우 나 여러 유이 샌드 박스를 만들 수 있습니까? 첫 번째 질문에

답변

0

답변 :

YUI() 기능은 샌드 박스를 작성합니다. 그래서

var Y1 = YUI(); 
var Y2 = YUI(); 

는 두 개의 분리 된 샌드 박스 및 Y1 것 및 Y2 서로에 대해 아무것도 알 수 없습니다. 그러나 이와 같은 작업을 수행 할 수 있습니다.

Y1 = YUI(); 

Y1.use('calendar', function (Y) { 
    Y.myCalendar = new Y.Calendar().render(Y.one('body')); 
}); 

setTimeout(function() { 

    Y1.use(function (Y) { 
     Y.myCalendar.on('dateClick', function (e) { 
      alert('date clicked'); 
     }); 
    }); 

}, 100); 

글로벌 Y1use 각 함수의 로컬 Y된다. 이것은 또한 귀하의 첫 번째 질문에 대한 답을 보여줍니다. 각 use 함수는 모듈을 부착하고 함수를 서로 비동기 적으로 실행하기 때문에이 예제에서는 setTimeout이 사용됩니다. setTimeout이없는 경우 myCalendar이 첫 번째 use으로 정의되기 전에 실행되기 때문에 두 번째 use에서 오류가 발생할 가능성이 큽니다.

use은 모듈의 자체 지연로드를 수행합니다. 모듈이 이미로드 된 경우 YUI 인스턴스에 모듈을 연결하기 만하면됩니다. 실제로 대부분의 응용 프로그램은 샌드 박스 당 하나만 use을 사용합니다.

물론 YUI docs에는 많은 정보와 세부 정보가 있습니다.