2011-01-24 3 views
7

자바 스크립트 API를 설계하는 좋은 방법은 무엇입니까?자바 스크립트 API 개발 우수 사례

저는 주로 JavaScript에 익숙하며 언어의 주요 기능인 "JavaScript : 좋은 부품"을 주로 배우고 있습니다. 현재 통계를 가르치기위한 웹 기반 도구를 디자인하고 있습니다. 자바 스크립트 API를 디자인하는 방법을 이해할 수 없기 때문에 코드 기반이 부분적으로 비열 해지고 있습니다.

내 배경은 Java 및 C++이며 인터페이스를 설계 한 다음 해당 인터페이스를 독립적으로 구현하는 데 익숙합니다. 분명히 이것은 JavaScript에서 잘 작동하지 않습니다.

도움과 제안을 보내 주셔서 감사합니다.

업데이트 : 여기 도구의 최종 버전 : http://www.lock5stat.com/statkey/index.html 나는 언어 기능, 언어에 상관없이 모든 API 개발을 염두에두고으로 그 같은 생각

+2

http://ejohn.org/blog/building-a-javascript-library/ – karim79

+0

@ karim79 감사합니다.이 같은 것을 찾고있었습니다. – Rich

+1

@ karim79, 방금 그 이야기를 끝내고. 그것은 대단히 통찰력이있었습니다. – Rich

답변

1

제 생각에는 jQuery를 사용하는 경우 가장 좋은 해결책은 애플리케이션을 jQuery 플러그인과 UI 위젯으로 나누는 것입니다. 플러그인은 코드를 구성하는 좋은 방법이며, 다른 응용 프로그램에서 다시 사용할 수 있으며 별도로 릴리스 할 수도 있습니다.

응용 프로그램을 플러그인 트리로 작성할 수 있습니다. C++/Java의 클래스와 같은 플러그인은 집계 만 가능하지만 상속은 고려하지 않아도됩니다. 코드에 대해

주 : document.createElement를 사용 MAIN.bootstrapPlot 기능에, 당신은 코드의 나머지 부분에서 같은 jQuery를 사용하고 캔버스에 대한 Canto library을 확인해야합니다.

+0

제 코드를 살펴 줘서 고마워. :) – Rich

+0

또한 Canto의 요점을 알려 주셔서 감사합니다. 향상된 구문과 체인이 좋습니다. 불행히도 IE에서는 작동하지 않습니다. 그게 나를위한 딜 브레이커 야. – Rich

1

. 당신이 인터페이스는 자바 스크립트에서 많은 이해가되지 않는 점을 지적하지만 객체 지향, 그래서 당신은 등 '클래스'를 사용 디자인 패턴,

  • 문서로 기능을 분할 수 있듯이

    1. . 모든 API를 문서화하는 것처럼 자바 스크립트 '클래스'를 문서화 할 수 있습니다.

    2. js의 인터페이스 또는 추상 클래스에 대한 기본 지원은 없지만 여전히 원칙을 적용 할 수 있습니다. 예를 들어, 오류를 발생시키는 메소드로 객체를 정의함으로써 '추상 클래스'를 만들 수 있습니다. 그러면 하위 클래스가 제대로 구현되지 않으면 오류가 발생합니다. 인터페이스를 사용하는 모든 것이 필요한 메소드가 init에 있는지 확인하기 위해 간단한 점검을 할 수 있습니다. 몇몇 js 사람들은 js가 느슨하게 타이핑되고 동적 인 것을 지적하면서 이것을 싫어할 것이며, 그렇게 사용되어야합니다.

    javascript에는 개념이 없으므로 'class'를 따옴표로 묶었습니다. 당신이 할 수있는 또 다른 일은 Sencha 나 jQuery와 같은 기존 API를 살펴보고 아이디어를 얻는 것입니다. Sencha는 서버 측 개발자가 자신의 문서를 보는 데 익숙한 API처럼 느낍니다.

  • +0

    그냥 메모 : 나는 John Resig의 Google이 jQuery API에 대해 이야기하는 것을 보았다. JavaScript를 사용하여 OO 환경으로 JavaScript를 보내면 언어의 풍부한 표현 부분이 많이 사라진다는 것을 설득력있게 주장했다. 흥미로운 점은 그가 콜백을 문서화하는 어려움, 함수에 전달 된 옵션 등으로 인해 XML 문서로 문서를 개발했음을 주목하는 것입니다. API를 직접 살펴 보도록 제안 해 주셔서 감사합니다. 다음은 통찰력있는 뷰 소스 인 jQuery의 XML 버전에 대한 링크입니다. http : //api.jquery.com/api/ – Rich