El mundo de internet cambia a velocidades vertiginosas, lo que ayer se consideraba estándar hoy ya no sirve, y lo que parecía que era la mejor forma de hacer las cosas ya no lo es tanto. Pero, en la mayoría de los casos, estos cambios son una evolución positiva para todos.

La evolución de las aplicaciones web
Todos disponemos de un Smartphone o Tablet en los que instalar las aplicaciones más molonas, no hablo de juegos, sino de esas que nos ayudan a organizarnos, ver el tiempo, buscar un restaurante, comprar o vender algo, usar mensajería instantánea...
Siempre he querido saber cómo se hacían las aplicaciones de los Smartphone, pero cuando indagaba un poco mi cerebro se recalentaba y terminaba más confundido que al empezar.

Al igual que pasó con el diseño de páginas web y los gestores de contenido, como WordPress, Drupal o Joomla, el diseño de las aplicaciones web está sufriendo una transformación parecida.
Lo que antes era un trabajo de días enteros tecleando, gracias a las últimas herramientas de creación de aplicaciones web, en unas pocas horas podemos tener una App totalmente funcional.
Ojo al dato, estas mejoras y facilidades que nos brindan las nuevas tecnologías, no evitarán que tengas que saber ciertas bases de programación si quieres evolucionar y no quedarte con lo básico, pero si te dedicas al Diseño Web, no tendrás ningún problema en adaptarte.
Una de las que más se oye hablar es Ionic, no es la única, existen muchas en el mercado, pero dependiendo de la forma que nos guste trabajar, la aplicación que queremos crear o las preferencias personales que tengamos, nos inclinaremos a usar una u otra.
Pero, ¿qué es Ionic?, ni más ni menos que un "Framework", un esqueleto sobre el que iremos añadiendo las funciones que necesitemos y así desarrollar aplicaciones web híbridas para varias plataformas, y además gratis ya que es software "open source".
Empecemos por el principio, ¿sabes qué es una aplicación web?
Aplicaciones web y aplicaciones nativas
Aunque las aplicaciones pueden realizarse para cualquier medio electrónico que las soporte, me centraré principalmente en los dispositivos móviles como Smartphones o Tablets.
Native App
En las aplicaciones nativas (native app), hay que realizar un proceso de descargar e instalación para poder utilizarlas, y requieren que sean compatibles con nuestro dispositivo.
Esto obliga al programador a crear el código tantas veces como plataformas existen para una misma aplicación. Aunque parece una desventaja, ayuda a que la App se adapte a la perfección, y al utilizar el almacenamiento del dispositivo, pueden crearse aplicaciones más complejas.
Web App
Las aplicaciones web (web app) se ejecutan en un navegador web, lo que hacen que sean compatibles con la gran mayoría de los dispositivos existentes, y sólo necesitan ser programadas una vez. Se las consideran aplicaciones híbridas.
Al mostrarse en un navegador web, el código que se utiliza es el mismo que el de las páginas web (HTML, JavaScript y CSS).
Pero no nos equivoquemos, una aplicación web no es una página web, mientras la primera ofrece una serie de servicios y es totalmente interactiva, las páginas webs son, en general, un modo informativo y estático de mostrar una información concreta.

No necesitan estar instaladas en el terminal, a excepción de algunas funciones básicas en algunos casos, ya que se ejecutan desde un servidor. Esta cualidad hace que necesitemos una conexión a internet para poder utilizarlas, aunque puede haber alguna función que no lo requiera. Desde el punto de vista del almacenamiento, nos ahorran mucho espacio en el terminal.
Programación de una Web App (MVC)
Como os mencionaba más arriba, las herramientas de las que disponemos hoy para programar y diseñar aplicaciones facilitan muchísimo el trabajo.
Recuperemos estas aplicaciones y veamos cuál es la forma en la que trabajan.
Estas aplicaciones se centran en la estructura llamada MVC (Model-View.Controller / Modelo-Vista-Controlador), es una estructura de diseño que separa los componentes que integra en el nombre.
A la hora de plantear el proyecto, tenemos perfectamente definidos estos tres componentes para trabajar de forma sencilla, limpia y sin problemas.

Model / Modelo
Es el encargado de generar los datos de la aplicación a través de peticiones a la base de datos para luego enviar los resultados a la "vista". La base de datos puede encontrarse dentro del terminal de forma local, o encontrarse en un servidor remoto.
View / Vista
El nombre lo dice, es el resultado visual de todos los datos que se han procesado y que el "modelo" nos da. El código HTML, junto con las hojas de estilo, se encargarán de hacer la interpretación de los datos en una aplicación web.
Controller / Controlador
El intermediario que hace que se entiendan los dos apartados anteriores, la conexión entre el "modelo" y la "vista". Actualiza el estado del "modelo" y cambia es aspecto de la "vista".
Desde mi punto de vista como diseñador, considero todo un acierto para las futuras aplicaciones y Apps que se creen a partir de estas herramientas.
Me ha sido util.
Un articulo práctico y bien redactado.