La web moderna.
En este penúltimo post veremos como empiezan a aparecer librerías y frameworks enfocados al frontend para el desarrollo de las SPAs, y como empiezan a salir algunas soluciones para enfrentarnos al principal problema que plantean este tipo de aplicaciones, el SEO. Pero si todavía no has leído el anterior post, deberías de leerlo primero,
Tecnologías Web 104.
Después de varios años sin novedades nuevas de HTML, en 2014 sacan
HTML5 que trae consigo un conjunto de
etiquetas nuevas (
nav,
header,
footer, main...) que añaden un significado al contenido de estas y nos ayudan a reducir el uso de las etiquetas
div, y otras como la etiquetas
audio y
video que permiten
reproducir contenidos multimedia de forma nativa (algo que hasta ahora solo podíamos hacer con Flash).
Otra de las novedades más importantes de HTML5 son todas las
APIs que traen y que nos van a permitir acceder a la cámara del dispositivo, a la ubicación, almacenar datos de forma local...
Este año,
Evan You, un extrabajador de Google, publica
Vue, un
framework progresivo, lo que quiere decir que vamos a poder usarlo como si fuera una librería al estilo de React, o para cosas más complejas al igual que haríamos con Angular. Si ya tenemos un proyecto con cualquier tecnología y queremos pasarlo a Vue, podremos hacerlo de poco a poco ya que no es necesario tener una configuración compleja como ocurre con React o Angular que la necesitan para transpilar el JSX o el TS.
A mi parecer, Evan ha ido picoteando un poco de cada librería y framework existentes hasta este momento quedándose con lo mejor de cada uno para añadirlo a Vue. Y es por lo que ha recibido el apoyo de la comunidad y por lo que actualmente se ha posicionado como uno de los frameworks o librerías más usadas para el frontend.
No olvidemos que también han sacado un
documental sobre Vue, al igual que hicieron en su momento con Ember.
Y llegamos al año 2015, el año en que sale una nueva versión del estándar de JavaScript,
EcmaScript 6.
ES6 es
una de las versiones más importantes de JavaScript hasta la fecha, debido a todas las novedades que trae consigo. Entre las novedades nos encontramos algunas como las
arrow functions, las
promesas, las dos
nuevas formas de declarar variables o la sintaxis para declarar
clases más parecida a como se hace en otros lenguajes.
Por otro lado,
Dan Abramov inspirado por el
patrón Flux que recomienda usar Facebook para
gestionar el estado en las aplicaciones de React, publica
Redux, una librería muy sencilla que aunque parece que se asocia solo a React, también se puede usar con cualquier otra librería o framework sin ningún problema.

Con Redux vamos a tener todo
el estado en un único sitio, que solo se va a poder modificar a través de unas funciones llamadas
reducers a las que se le mandan
acciones que indican el cambio que hay que realizar sobre el estado.
Yendo a lo nativo
Siguiendo con el ecosistema de React, este año se presenta
React Native, una librería construida sobre React, y que permite
construir aplicaciones móviles nativas para Android e iOS usando unos componentes predefinidos que trae la librería. Usan un elemento al que se refieren como
Bridge que se encarga de
realizar la comunicación entre la parte de JavaScript y la parte nativa. React Native va mandando mensajes que describen la acción que hay que ejecutar, y la parte nativa la ejecuta
Este mismo año,
Facebook se encuentra con el problema de que tienen que desarrollar su aplicación móvil de forma nativa y la API para traer los datos que necesitan en el feed no les sirve porque es una interfaz muy compleja en la que hay que mostrar muchos datos. Entonces surge la idea de
GraphQL, un lenguaje de consultas con el que consiguen
traer los datos que necesitan con una sola petición, en lugar de tener que realizar varias peticiones como se venía haciendo.
Y esta es otra de las herramientas sobre las que podemos encontrar un
documental.
Por último, este año, aparece
Polymer, una librería de JavaScript para crear aplicaciones web mediante el uso de componentes. Al principio había unos pocos componentes básicos que proveían de una funcionalidad genérica que sirve para la mayor parte de las aplicaciones, pero han ido añadiendo nuevos componentes según han ido saliendo las nuevas versiones. Es una librería que siempre ha ido de la mano de
las especificaciones que definen los
Web Components.
Durante el 2016 el equipo de
Google presenta Angular 2 en una conferencia, causando un gran revuelo entre la comunidad ya que
habían rediseñado el framework por completo. En esta versión han decidido apostar por
TypeScript como lenguaje de programación, han cambiado la sintaxis de las directivas, y lo que en la antigua versión eran los controladores, ahora son los componentes.
Desde entonces han ido sacando distintas
versiones de Angular, aproximadamente una cada 6 meses, pero ninguna con grandes cambios como de AngularJS a Angular 2 (de momento).
Sobre el ecosistema de Vue aparecen dos herramientas nuevas.
De SPA a universal
Una de ellas es
Nuxt, un framework construido sobre Vue que nos permite crear aplicaciones de una forma muy rápida ya que
no nos tenemos que preocupar por configurar casi nada. Cuando digo casi nada, me refiero a que ni siquiera tendremos que configurar el router, ya que el va a ir generando las rutas a partir de los archivos y carpetas que añadamos dentro de la carpeta
pages, tampoco Vuex, ni .
Pero no solo esto, lo mejor de Nuxt (a mi parecer) es que podemos hacer que nuestra aplicación sea una SPA, realice el primer renderizado en el servidor (mejorando el SEO) o genere archivos HTML estáticos a partir de las rutas que tenga nuestra aplicación, y todo ello de una forma muy sencilla.
Además también hay que decir que tiene una
lista increíble de módulos que añaden cierta funcionalidad a nuestra aplicación y por tanto nos simplifican el trabajo evitando que tengamos que configurar otras cosas que no trae por defecto, como por ejemplo alguna librería de componentes.

Y por otro lado, surge
Vuex que es el
gestor de estado para las aplicaciones de Vue. Esta librería se basa en Redux y por tanto en el patrón Flux, pero está diseñada para usarla solo con Vue al contrario de lo que ocurre con Redux. En este caso, los elementos con los que nos encontramos son las
acciones que se despachan desde la vista y en las que vamos a realizar las operaciones asíncronas, después tenemos las
mutaciones que se encargan de realizar el cambio en el estado, y los
getters que nos devuelven parte del estado para usarlo en las vistas.
En 2017 surge un nuevo competidor para aquellas tecnologías como React Native o Ionic que nos permiten crear aplicaciones nativas e híbridas usando los lenguajes propios de la web, es decir, HTML, CSS y JS.
Flutter nos va a permitir
crear aplicaciones nativas para Android e iOS mejorando considerablemente el rendimiento ya que estas aplicaciones construidas con Dart se van a compilar usando librerías de C a código máquina.
Las otras tecnologías a nombrar este año son
Next y Angular Universal. Donde Next es la alternativa a Nuxt para la librería de React, mientras que Angular Universal solo permite realizar el primer renderizado de las aplicaciones de Angular en el servidor.
Terminamos este post aquí, dejando para el siguiente aquellas tecnologías que han salido durante los últimos dos años y las nuevas versiones de algunas de las que ya hemos hablado en esta serie de posts. No os perdáis
Tecnologías Web 106.