Cada vez se crean más aplicaciones javascript que combinan en su arquitectura: patrones MVC, módulos, widgets, plugin o framework como jQuery. Pero esas aplicaciones javascript cada vez se hacen más grandes e inmantenibles. Es muy difícil escalarlas si desde el principio no hemos fijado una serie de pautas en la arquitectura.
En una interesante presentación en el pasado jQuerySummit realizada por Addy Osmani (ingeniero de AOL que ha trabajado con grandes aplicaciones javascript) nos explica como construir aplicaciones escalables que tengan su lógica desconectada, módulos desacoplados o el uso de un librería DOM que pueda cambiarse por otra en un futuro, por ejemplo intercambiar Dojo por jQuery cuando sea necesario.
Los puntos importantes del desarrollo de una arquitectura sólida son el uso de patrones de diseño que reflejen claramente las necesidades que tenemos y no otras. Muchos de los patrones que más éxitos tienen actualmente son patrones que tienen su raíz en el servidor y podrían usarse tanto en un lugar como en otro. Tenemos un amplio abanico donde elegir como Backbone.js, JavascriptMVC, Spine.js, SproutCore, AngularJS, Sammy.js o TodoMVC.
Además tenemos que diseñar los diferentes módulos de nuestra aplicación teniendo en cuenta que sean lo más desacoplados posibles. Uno de los patrones más útiles es el patrón Facade que provee una API, limitando claramente lo que son los métodos públicos y privados del core de la aplicación a los pueden acceder los distintos módulos. Otro patrón es Mediator que encapsula la interacción entre unos módulos y otros.
Muy recomendable echar un vistazo a la presentación para construir aplicaciones escalables que crezcan de forma mantenible. Y no caer en la tentación de escribir miles de lineas sin sentido.
Presentación | Large-scale JavaScript Application Architecture (Slideshare)