2011-01-24 15 views
7

Qual è un buon approccio alla progettazione di un'API JavaScript?Buone pratiche nello sviluppo dell'API JavaScript

Sono relativamente nuovo in JavaScript e sto imparando le migliori caratteristiche della lingua, principalmente da "JavaScript: The Good Parts". Attualmente sto progettando uno strumento basato sul web per insegnare le statistiche. La base di codice sta diventando inaffidabile in parte perché non capisco come progettare un'API JavaScript.

Il mio background è in Java e C++ e sono utilizzato per progettare interfacce e implementare tali interfacce in modo indipendente. Ovviamente, questo non funziona bene in JavaScript.

Grazie per qualsiasi aiuto e suggerimenti.

Aggiornamento: la versione finale dello strumento qui: http://www.lock5stat.com/statkey/index.html

+2

Potrebbe interessarti dare un orologio: http://ejohn.org/blog/building-a-javascript-library/ – karim79

+0

@ karim79 grazie, stavo cercando qualcosa di simile. – Rich

+1

@ karim79, appena finito di guardare quel discorso. Questo è stato estremamente perspicace. – Rich

risposta

1

A mio parere, se si utilizza jQuery, la soluzione migliore è dividere la propria applicazione in plugin jQuery e widget dell'interfaccia utente. I plugin sono un ottimo modo per organizzare il codice, puoi riutilizzarli in altre applicazioni e puoi anche rilasciarlo separatamente.

È possibile scrivere le applicazioni come un albero di plugin. Puoi pensare a plugin come classi in C++/Java con aggregazione ma non ereditarietà.

Note sul codice: in funzione MAIN.bootstrapPlot si utilizza document.createElement, si dovrebbe utilizzare jQuery come nel resto del codice e controllare Canto library per Canvas.

+0

Grazie per dare un'occhiata al mio codice. :) – Rich

+0

Inoltre, grazie per il punto a Canto, la sintassi e il concatenamento migliorati sono grandiosi. Sfortunatamente non ha funzionato su IE; questo è un dealbreaker per me. – Rich

1

penso che sia lo stesso di sviluppo di qualsiasi API indipendentemente dalla lingua, tenendo conto delle caratteristiche del linguaggio.

  1. Come fai notare interfacce non ha molto senso in JavaScript, ma è orientato agli oggetti, in modo da poter dividere la funzionalità in 'classi', design pattern di utilizzo, ecc

  2. Documentazione . Puoi documentare una 'classe' javascript come se stessi documentando qualsiasi API.

  3. Anche se non esiste alcun supporto nativo per interfacce o classi astratte in js, è comunque possibile applicare i principi. Ad esempio, è possibile creare una 'classe astratta' definendo un oggetto con metodi che generano errori, in questo modo le sottoclassi eseguiranno l'errore se non sono implementate correttamente. Qualsiasi cosa che usi un'interfaccia può fare un semplice controllo per vedere se i metodi necessari sono in atto su init. Si noti che alcune persone si accorgono di ciò, sottolineando che js è tipicamente digitato e dinamico, e dovrebbe essere usato in questo modo.

Nota che inserisco 'classe' tra virgolette perché javascript non ha nozione in quanto tale. L'altra cosa che puoi fare è cercare le API esistenti come Sencha o jQuery per avere qualche idea. Sencha sembra un'API su cui uno sviluppatore lato server sarebbe abituato (guarda i loro documenti).

+0

Solo una nota: ho guardato il Google Talk di John Resig sull'API jQuery in cui argomentava in modo convincente che forzare il JavaScript in un ambiente OO da utilizzare e documentare toglie gran parte della parte espressiva del linguaggio. È interessante notare che ha sviluppato la documentazione come documento XML a causa della difficoltà di documentare i callback, le opzioni passate alle funzioni, ecc. Grazie per il suggerimento di guardare direttamente le API. Ecco un collegamento alla versione XML di jQuery che è intuitiva vista-sorgente: http: //api.jquery.com/api/ – Rich

Problemi correlati