Jeff Watkins씨가 자신의 MVC 라이브러리인 Coherent를 업데이트하고, 자식 위젯들을 위해 선언적 구문을 추가해야하는지 고민했습니다. 현재는, 상당히 많은 init() 설정 코드를 작성해야 하지만, 그는 대신 이렇게 하기를 원했습니다:

[code:js]
sample.MyWidget= Class.create(coherent.Widget, {
 
    init: function()
    {},
 
    title: TextWidget('div.header em', {
                htmlKeyPath: '*.selection.title',
 
                onclick: function(event)
                {
                    ... handle clicking on the title ...
                },
                ... etc ...
            }),
 
    nextButton: Widget('div.controls button.next', {
                    onclick: function(event)
                    {
                        ... go to the next image ...
                    }
                }),
    ... etc ...
});

init을 부르기 직전에, Widget 프레임웍은 제목과 다음 버튼을 위해서 하위 위젯을 생성해야 합니다. title을 위해서, HTML 바인딩은 외부 위젯으로부터 키 패스인 selection.title에 접속합니다. 덧붙여, click 이벤트 핸들러가 주어진 메소드로 생성됩니다. title을 위한 onclick 메소드의 스코프는 실제의 TextWidget이라기보다는 MyWidget입니다.

새로운 Selector 라이브러리를 사용하면, 직접 하향 접근(계층을 순차적으로 따라가는 접근) 혹은 아이디로 접근하는 것보다 어떤 CSS 쿼리를 기반으로 위젯을 작성할 수 있습니다. 하위위젯안에 하위 위젯이 있을 필요가 있는지는 생각해보지 않았습니다. 만약 그것이 찾고 계신 것이라면, 아마도 구조 선언보다는 위젯 생성을 살펴보는 것이 좋을 것 같습니다.

어때보이시나요? Jeff씨에게 해줄 조언이라도 있나요?

from Declarative Syntax for Widgets on Ajaxian
Posted by 행복한고니 트랙백 0 : 댓글 0