¿Cómo se logra Nirvana con la estructura del proyecto JavaScript?

Yo diría que esto depende principalmente de cuán compleja será la aplicación. Abordaré los dos extremos del espectro y el brumoso término medio, pero debe tenerse en cuenta que hay un gradiente de complejidad entre considerar.

En el lado más claro, simplemente aumenta un sitio web tradicional. Es decir, agregar efectos visuales, algunos componentes simples de interfaz de usuario y comunicación asincrónica. Aquí es posible que no necesite la administración de complejidad proporcionada por algo como Backbone.js o JavascriptMVC. En mi empresa, en estas situaciones, utilizamos las clases MooTools y las utilidades principales (como Function.prototype.bind) para la organización del código, jQuery para la manipulación de dom y QUnit para las pruebas.

En el lado más complejo estaría construyendo una aplicación de cliente grueso, posiblemente de una sola página, donde todo menos la lógica comercial crítica se introduce en el cliente. En este caso, los frameworks mvc como SproutCore, Cappuccino Framework, JavascriptMVC o Backbone.js se vuelven extremadamente importantes para administrar la complejidad de interacción de la interfaz de usuario y el servidor.

Si el nivel de complejidad se encuentra en algún punto entre esos dos extremos, reduciría la lista de los marcos de mvc mencionados anteriormente a Backbone.js. Es liviano pero aún le brinda la organización y la administración del estado necesarias para una experiencia de cliente “más rica”, sin los bits innecesarios que los otros incluyen (por ejemplo, un completo kit de herramientas de interfaz de usuario).

Mis proyectos recientes fueron aplicaciones 100% javascript (soportadas por un servidor json spittin ‘aplicaciones, por supuesto).

Lecciones aprendidas hasta ahora, sin ningún orden en particular:

  • Espacio de nombres de todo . No puedo enfatizar esto lo suficiente. Tenga un solo espacio de nombres para su proyecto y coloque espacios de nombres adicionales dentro de él. Entonces, un solo ‘console.log (mynamespace);’ volcaría toda su aplicación en la consola.
  • Separe las áreas funcionales en archivos y directorios . Intenta mantener los archivos relativamente pequeños. Ayuda a administrar el código. O, alternativamente, puede desglosar los archivos por componente de interfaz de usuario (cuadrículas, paneles, etc.).
  • Conozca su marco de elección, comprenda cómo funcionan sus componentes internos, descubra las advertencias, etc.
  • Mantenga el formato de entrada y las estructuras de datos de retorno del servidor consistentes .
  • Encuentre el marco adecuado para el trabajo o decida que el marco sin marco funciona mejor para usted. Pero tome esa decisión primero. Pasé de sin marco a prototipo / scriptaculous a jquery seguido de dojo. Pasé mucho tiempo (y proyectos) con cada uno y siempre había algo que no estaba allí para mí.
  • Si busca un paquete completo de herramientas con funciones de UI y diseño completas y * pulidas *, consulte ExtJS.com (ahora conocido como Sencha.com). Simplemente abra la página de la demostración y juegue con cada una. He pasado por muchos frameworks y kits de herramientas, y nada se acerca ni remotamente. Sin embargo, no es gratis para proyectos comerciales, pero vale cada centavo. Obtendrá lo que paga en este caso. La mejor característica de ExtJs es lo intuitivas que son las API. Mire la aplicación de documentación de la API para comprender lo que quiero decir.
  • No fue fácil contratar personas con experiencia ExtJs, pero encontré personas con Javascript decente que lo recogieron lo suficientemente rápido. Si establece una estructura de proyecto correctamente y construye los bloques básicos de su aplicación, un buen chico de JS puede continuar donde lo dejó. Esto se aplica a cualquier uso del marco: la contratación basada en la experiencia del marco descartará a los desarrolladores muy buenos que podrían elegir su marco en 5 minutos y reescribirlo al revés, pero nunca tuvieron la oportunidad de usarlo.
  • No tenga miedo de comenzar de nuevo si va demasiado lejos en una dirección incorrecta. La segunda vez no te llevará la mitad de tiempo que la primera, y será mejor.
  • Intenta mantener las cosas esbeltas . Menos es más.
  • Tenga en cuenta el rendimiento .
  • Si puede, limite sus navegadores compatibles o solicite un navegador en particular como requisito del sistema. Esto no se aplica a todos los proyectos, pero si lo hace a la elección de un navegador de destino, lo hará un tipo muy feliz. Cuando sea posible, ordeno Chrome, solo por su velocidad de Javascript.

More Interesting

¿Cuál es el alcance y la relevancia de BPM (Business Process Management) para un desarrollador de Java?

¿Cuál tiene el mejor ROI para la informática, UT Austin o Pitt?

¿Por qué la mayoría de las compañías de software no tienen ingenieros híbridos que realizan trabajos de desarrollo y control de calidad?

¿Cuáles son los desafíos de la microrred?

¿Puedo ser desarrollador web haciendo ingeniería de software?

¿Puede ser un desarrollador de software 'puro' o también necesita poseer conocimientos específicos de la industria?

¿Qué debe hacer si ve que su colega está cometiendo un código realmente malo para el proyecto y a su gerente no le importa?

¿Es posible crear un sistema de información que permita el aprendizaje automático en el sistema en Java, C ++, R y Python al mismo tiempo?

¿Por qué los equipos de desarrollo de productos no quieren contratar ingenieros de software que no tengan experiencia previa en desarrollo de productos, sino solo aplicaciones comerciales?

¿Cómo funcionan las computadoras como lo hacen? ¿Cuándo se convierte la electricidad en lógica ejecutable y cómo?

¿Cuál es el mejor tutorial de SQL para probadores de software?

Si actualmente es ingeniero de software, ¿cuáles son las señales de que sería más adecuado para la gestión sobre el desarrollo, o viceversa?

¿Por qué no hay una plataforma de código abierto para desarrollar productos de software?

¿Por qué tanta gente ha logrado hacerse bastante rica creando software?

¿Qué tipo de proyecto expondría uno a muchos conceptos de programación concurrentes?