2012-02-16 2 views
0

간단한 자바 스크립트 위젯 디자인 질문. 나는 자바 스크립트에서 최근에 일하기 시작했다. 그리고 내 작업의 일부로, 재사용 가능한 많은 코드를 작성하려고합니다. 그래서 나를 위해 javascript widget이 가장 좋은 방법 인 것 같습니다. 그러나 나는 디자인 딜레마에 직면하고 있으며 올바른 대답을 찾을 수 없습니다.OOPs의 개념을 자바 스크립트 위젯

나는 HTML 컴포넌트에서 문자열을 변경하는 간단한 자바 스크립트 위젯을 가지고있다. 그래서 내 위젯은 다음과 같이 다소이다

(function() { 
    var convertString = function() { 
     $(".classForHtmlComponentsIWantToHandle").each(function(index, element) { 
      //js_fu stuff done with string fetched from "element" 
     }); 
    }; 

    var _somePrivateHelperMethod() { 
     //some work that would have been impossible without this helper method 
    }; 

    GloballyDefinedNamespace.StringUtils = {convert : convertString}; 
}()); 

이 내가 DOM에서 모든 HTML 구성 요소를 추출, 당신이 내 위젯 틱 기능에 주목한다면 저 위에서 이제 나중에

GloballyDefinedNamespace.StringUtils.convert(); 

를 호출 할 수 있습니다 , 나는 문자열을 변경하고 싶다. 흥미로운 점은 HTML이 span과 div가 동일한 CSS 클래스와 함께 있고 textbox 구성 요소가 CSS 클래스 인 것입니다.

둘 다 값을 추출하고 새 값을 다시 설정하는 다른 방법이 있습니다. 내 경험에 비추어 볼 때 이것이 문자열을 변경하는 위젯이라면 신경 써야 할 모든 것이 획일적 인 방식으로 문자열을 "유지"한 다음 객체 기대치를 기반으로한다는 점에서 내 위젯은 맹목적으로 작동 할 수 있어야합니다.

"오리처럼 들리면 오리처럼 걷습니다. 그러면 오리입니다." 사물의 종류.

그래서 효과적으로 내 위젯에 텍스트 상자 또는 스팬되는 "요소"개체를 구별에 대해 걱정하지 수 있도록하고 싶습니다. 대신 일반 래퍼로 포장하십시오. 사람들이 자바 스크립트의 일반적인 규칙을 위젯 것을 충고했다 그러나

위젯 내에서 구성 요소 별 물건을 처리하는 것입니다. 나는 확실하게 인터페이스로 프로그래밍하고 구체적으로 프로그래밍하지 않는다고 확신하므로 확신하지 못한다. 그래서 나는 갈등을 겪고있다. 내 예에서

위, 나는 강조 딜레마가이 문제에 정의를하지 그렇게 생각하지 않지만, 더 큰 규모의이 종종 나를 위해 질문으로 나타납니다.

나는 HTML DOM 내 위젯 내에서 해당 구성 요소의 독립을 구축하는 방법에 관해서는, 사람의 의견을 듣고 싶습니다? 같은 인터페이스를 사용하여 자바 스크립트 래퍼 객체를 작성한 다음이를 별도로 선택하고 다음과 같이 메소드 호출을 작성하는 솔루션입니까?

(function() { 
    var locateAllComponents = function() { 
     $(".generic-class").each(function(index, element) { 
      //wrap element into suitable wrapper that has common interface for getter 
      //setter. 
      GloballyDefinedNamespace.StringUtils.convert(wrappedElement); 
     }); 
    }; 

}()) 

모든 통찰력과 응답은 높게 평가 될 것이다.

답변

1

외국어 인 자바 스크립트에서 개념을 강요하려고합니다.

인터페이스 프로그래밍은 OOP에서 작동하지만 다른 언어 유형에서는 잘못된 생각입니다.

jquery가 .text() (http://api.jquery.com/text/) 및 .val() (http://api.jquery.com/val/)을 사용하는 방법을 살펴보면 이유에 따라 두 가지 기능을 추상화하려는 것을 볼 수 있습니다.

위젯은 유용 할 수 있지만, 팽창 및 성능의 비용으로, 그래서 당신은 당신이 무엇을보고 당신이 가격을 너무 많이 정확하지 않도록 할 필요가 있습니다.

양식 요소에서 작동 할 수있는 위젯을 사용하여 작게 시작하고 오브젝트에서 합리적으로 할 수있는 작업을 확인하십시오. 그러나 API 사용자 또는 API 개발자는 추가 기능을 얻기 위해 위젯에 전달할 함수를 만듭니다.

그러나이 모든 것이 성능에 영향을 미치므로 작업하면서 일부 단위 테스트를 수행하여 성능 변화를 살펴보고 가격 변화에 대한 안내를받을 수 있습니다.

휠을 다시 발명하지 않고 JQuery UI 위젯을보고 처음부터 살펴보고 싶을 수도 있습니다.

관련 문제