Archivo para la categoría AngularJS

AngularJS y nuevas posibilidades para las aplicaciones Web

AngularJS

AngularJS Architectural Overview

Recientemente en Arckanto software estoy desarrollando una aplicación Web para automatizar un proceso de negocios operativo de una institución microfinanciera. Al margen de las características funcionales, el desarrollo técnico está basado principalmente en una base de datos MySQL y en el framework de desarrollo Yii, el cual por cierto ha resultado una gratísima sorpresa para mi. Perfectamente podemos imaginar a Yii como el Rails pero para el mundo PHP: Un sólido framework basado en el patrón MVC y la filosofía de “Convention over Configuration”.

Pero en realidad, este post no está dedicado a Yii (quizá en otro post futuro comentaré más de él) sino a otra tecnología: AngularJS. Resulta que para poder desarrollar alguna de las características de la aplicación mencionada, requería muchos elementos de programación del lado del cliente en lenguaje javascript (o sea, programación a ser ejecutada por el Navegador mismo). Aunque antes había hecho algunas pequeñas cosas en javascript, principalmente en jQuery, en realidad no había profundizado mucho en el tema.

Esta vez requería un poco más de “inteligencia” del lado del Browser porque requería calcular totales, subtotales y validaciones relacionadas, antes de “postear” (enviar) la información al servidor y la aplicación Yii. Así que decidí investigar un poco el tema y vi que existen muchos frameworks javascript para desarrollar modernas aplicaciones Web (single-page applications) que requieran mucha interactividad en el Navegador. Algunas de los frameworks más relevantes son Backbone.js, Ember.js, Knockout.js y otros. Pero el que más me llamó la atención fue AngularJS (la razón bastante técnica para describirla en este post pero en síntesis puedo decir que fue debido a su filosofía de no manipular el DOM desde los controladores sino separarlo completamente usando Directivas: Controlador imperativo y View Declarativo).

AngularJS es un framework javascript desarrollado e impulsado por Google (así que imaginarán el respaldo que tiene) orientado a lo que se llama “Single-Page Applications” que se traduce en Aplicaciones de una sola Página (este tema por sí solo merecería otro post). Llamadas así porque todo el sistema reside en un solo archivo HTML, y desde él se llaman a todos los controladores javascript que le dan forma al funcionamiento del sistema. ¿Impresionante, no? Todo el sistema en una sola página. Bueno, aunque así se llaman y efectivamente una página puede contener todo el sistema, la realidad es que uno puede tener varias páginas Web (especie de módulos) que juntas forman un amplio sistema Web. Dicho de otro modo, no es necesario que estén en una sola página pero esa es la intención.

Eso da una interactividad enorme a la aplicación pues mucho de la lógica es ejecutada por el Navegador mismo. AngularJS quedó como “anillo al dedo” para lo que yo requería. Pero lo más importante para mi fue que en el proceso entendí (o más bien, estoy entendiendo) todo lo que significa desarrollar en AngularJS (o con un framework javascript; javascript puro en el caso de AngularJS) y cómo puede interrelacionarse este tipo de aplicaciones con aplicaciones del lado del servidor (como Rails o Yii) basadas en una base de datos central.

En mi opinión, todo este movimiento de frameworks javascript, con AngularJS como un ejemplo icónico, vendrá a fortalecer muchísimo el desarrollo de aplicaciones de Nube. Es el complemento ideal de Rails o de Yii, estos siempre necesarios para darle solidez al backend y la persistencia de datos. Pero ahora el desarrollo Web logra emular en interactividad, sino es que superar, los antiguos desarrollos para Desktop. Ergo: Es la tendencia. Por ahí está gran parte del futuro de las aplicaciones Web de Nube, sin duda.

Reflexión final: ¿No será que todo tiende a ser cíclico? De Mainframes a PCs. De PCs a Cliente/Servidor. Y se reinicia el ciclo: De sistemas centrales Web a sistemas distribuidos y comunicados con arquitectura REST (algo así como de nuevo en cliente-servidor). Pero claro, esta vez yo obviamente no apostaría por VisualBasic y MS-SQL-Server como amplia base de difusión tecnológica. Apostaría por AngularJS (en el cliente), más algún framework MVC de servidor (preferiblemente Ruby on Rails), más MySQL y/o MongoDB como Bases de Datos. ¿Qué tal suena? Veremos…!

Mientras, aquí “Hola Mundo” en AngularJS:

, , , ,

4 comentarios