2011-01-24 7 views
7

¿Cuál es un buen enfoque para diseñar una API de JavaScript?Buenas prácticas en el desarrollo de la API de JavaScript

Soy relativamente nuevo en JavaScript y conozco las principales características del lenguaje, principalmente de "JavaScript: The Good Parts". Actualmente, estoy diseñando una herramienta basada en web para enseñar estadísticas. La base del código se está volviendo difícil en parte porque no entiendo cómo diseñar una API de JavaScript.

Mi experiencia es en Java y C++ y estoy acostumbrado a diseñar interfaces y luego implementar esas interfaces de forma independiente. Obviamente, esto no funciona bien en JavaScript.

Gracias por cualquier ayuda y sugerencias.

actualización: Versión final de la herramienta aquí: http://www.lock5stat.com/statkey/index.html

+2

Te puede interesar mirar este reloj: http://ejohn.org/blog/building-a-javascript-library/ – karim79

+0

@ karim79 gracias, estaba buscando algo como esto. – Rich

+1

@ karim79, acaba de terminar de ver esa charla. Eso fue muy perspicaz. – Rich

Respuesta

1

En mi opinión, si está utilizando jQuery, la mejor solución es dividir su aplicación en complementos jQuery y widgets UI. Los complementos son una gran manera de organizar el código, puede reutilizarlos en otras aplicaciones y también puede liberarlos por separado.

Puede escribir sus aplicaciones como un árbol de complementos. Puedes pensar en complementos como clases en C++/Java con agregación pero no herencia.

Notas sobre el código: en función MAIN.bootstrapPlot que utiliza document.createElement, se debe utilizar jQuery como en el resto del código, y se les Canto library de lienzo.

+0

Gracias por echar un vistazo a mi código. :) – Rich

+0

Además, gracias por el punto de Canto, la sintaxis y el encadenamiento mejorados son geniales. Lamentablemente no funcionó en IE; eso es un obstáculo para mí. – Rich

1

Creo que es el mismo que el desarrollo de cualquier API, independientemente del idioma, teniendo en cuenta las características del lenguaje.

  1. Como usted señala interfaces no tienen mucho sentido en javascript, pero es orientado a objetos, por lo que puede dividir su funcionalidad en 'clases', el uso de patrones de diseño, etc.

  2. Documentación . Puede documentar una "clase" de JavaScript tal como lo hace con cualquier API.

  3. Aunque no hay soporte nativo para interfaces o clases abstractas en js, aún puede aplicar los principios. Por ejemplo, puede crear una 'clase abstracta' definiendo un objeto con métodos que arrojen errores, de ese modo las subclases generarán un error si no se implementan correctamente. Cualquier cosa que use una interfaz puede hacer una simple comprobación para ver si los métodos necesarios están en su lugar en init. Tenga en cuenta que algunas personas js fruncirán el ceño al respecto, señalando que js es poco tipeado y dinámico, y debe utilizarse de esa manera.

Tenga en cuenta que puedo poner la 'clase' entre comillas porque Javascript no tiene noción como tal. La otra cosa que puede hacer es buscar API existentes como Sencha o jQuery para obtener algunas ideas. Sencha se siente como una API a la que un desarrollador del lado del servidor estaría acostumbrado (mire sus documentos).

+0

Solo una nota: vi la charla de Google de John Resig sobre la API de jQuery en la que argumentó convincentemente que obligar a JavaScript a usar un entorno de OO y documentar le quita gran parte de la parte expresiva del lenguaje. Es interesante observar que desarrolló la documentación como un documento XML debido a la dificultad de documentar devoluciones de llamadas, opciones pasadas a funciones, etc. Gracias por la sugerencia de mirar las API directamente. Aquí hay un enlace a la versión XML de jQuery, que es fuente de visualización perspicaz: http: //api.jquery.com/api/ – Rich

Cuestiones relacionadas