Hace una semana que comencé el curso de Ember.js de Code School, y acabo de terminarlo ahora mismo.

Ember.js es un framework MVC escrito en Javascript, y que por lo tanto corre totalmente en el navegador web.

Aunque Ember.js está diseñado para construir aplicaciones web, no necesitamos un servidor web para que las sirva, ya que todo el código se ejecuta en el cliente.

De hecho no es necesario tampoco un servidor web para distribuir la aplicación. La aplicación se podría enviar mediante un archivo comprimido y simplemente ejecutarla en el navegador en modo local.

Sin embargo es habitual que junto a un cliente con Ember.js se utilice un servidor con otra tecnología, que nos proporciona dos cosas:

  • Mantiene el cliente actualizado. El cliente pedirá los archivos de la aplicación al servidor en la primera petición web.
  • Alimenta a la aplicación con los datos que va a manejar. Ember.js contactará con el servidor web cuando necesite obtener datos, según en qué estado esté la aplicación y qué acciones realice el usuario.

Se me ocurren cuatro grandes ventajas de este esquema:

  1. Un desarrollador no necesita contratar un servicio de hosting para distribuirla. Podría simplemente distribuir los archivos javascript y ejecutar la aplicación de forma local (o distribuir los archivos y un servidor, como es el caso de ember-tunes).
  2. Separa completamente diferentes dominios. Front-end y back-end. Origen de los datos y cómo se muestran los datos. El back-end no tiene por qué preocuparse de generación de HTML, ni de hojas de estilo. Solo debe servir una API REST al cliente, y Ember.js será el encargado de mostrar el HTML, actualizar los campos que lo requieran, cambiar las clases CSS y demás.
  3. El servidor se libera de carga, ya que no tiene que crear todo el documento HTML. Esa carga pasa al cliente, por lo que el servidor puede servir más peticiones y en menos tiempo.
  4. Casi todas las interacciones con el usuario pueden hacerse instantáneamente. Cambiar de página, mostrar formularios y validarlos, etc. No es necesario hacer una petición para cada acción. Solo es necesario hacerlo cuando la aplicación necesita obtener datos del servidor.

En realidad Ember.js no ofrece nada que no se pudiera hacer ya. Lo que ofrece es una manera fácil de hacerlo. Te permite modelar la aplicación web y abstraerte de todo el tema de hacer peticiones AJAX, actualizar los campos en el HTML, quitar y agregar clases CSS según el estado de los datos y demás.

Hay que admitir que hay momentos en los que no destaca por su sencillez. En ember.js tenemos Rutas, Modelos, Controladores, Vistas, Plantillas, Componentes… Muchos ingredientes, muchos métodos y propiedades que es normal que den más de un dolor de cabeza. Espero que se cure con la costumbre.

En fin, Ember.js es un framework muy interesante y no descarto realizar un proyecto con él en un futuro, pero primero tendré que buscar algo que hacer (¡y algo de tiempo!).

Se que no me he puesto muy técnico ni he colgado nada de código, pero me apetecía simplemente comentaros lo que ofrecía y lo que es capaz de hacer. Probablemente en una entrada futura intente montar una aplicación sencilla y así os enseño lo que se puede conseguir.

Os dejo con una colección de enlaces interesantes