Aplicaciones web ambiciosas con Ember.js
Tags: ember
Published: 2021-06-24 14:47:06

Cuando se trata de crear aplicaciones de página única o SPA en inglés,
como desarrolladores tenemos muchas opciones de dónde escoger 
hay frameworks y librerías muy conocidas como angular en el área de framework
y vue | react en el área de librería.

Hoy quiero hablarles de un framework no muy usado o conocido
pero que merece ser mencionado: [Ember.js](https://emberjs.com/). He trabajado
con este framework por al menos 6 años, y la forma en la que llegué a este
fue un poco graciosa, en ese tiempo estaba dando los tests para entrar
a la comunidad de freelancers [Toptal](https://www.toptal.com/NWaLA1/worlds-top-talent) uno 
de los pasos era realizar un pequeño proyecto y para esto escogí Ember.js y PHP en el backend
lo escogí como para aprender, había trabajado en el pasado con knockout.js, angular js, 
backbone y por supuesto jQuery; pero quería algo que realmente ayudara en la productividad,
luego de ser aceptado en Toptal, la primera entrevista con un cliente era
para llenar un puesto para trabajar con Ember, en principio dude en aplicar
porque solo lo había aprendido para hacer este test, pero el reclutador me
animó y la entrevista fue muy bien y desde entonces estoy trabajando con este cliente
con 4 aplicaciones internas grandes hechas en Ember.

Una de los principios de Ember.js es que la evolución no debe ser drástica,
como en el caso de angular que hubo un re-write del framework y los que crearon
una app con angular js no pudieron pasar directamente a angular v2, la idea
de Ember era siempre hacer las transiciones de versiones lo más seguras
y fáciles posibles, para esto proveen con muchas herramientas, como `deprecations`
para que desde una versión anterior comiencen a notarse los cambios que se activarán
en las versiones posteriores y que alertan a los desarrolladores para cambiar el código de la aplicación
para una futura actualización sin novedades, también existen `codemods`
para que los cambios se hagan automáticamente, e incluso hay `feature flags` que
permiten probar características que saldrán públicas en futuras versiones
en versiones anteriores.

El framework ya lleva 10 años con una comunidad pequeña pero
con gente de mucha calidad y muy abierta e inclusiva. En cuestión de paquetes disponibles
para la comunidad hay una gran variedad, puedes chequear [Ember Observer](https://emberobserver.com/)
donde se registran todos los addons que tienen compatibilidad con Ember.

Como ejemplos de aplicaciones públicas desarrolladass con Ember están LinkedIn, Heroku, Intercom, Square.

En cuestiones un poco más técnicas, el framework tiene muchas opiniones en su diseño
tal vez para muchos esto no es bueno, para mi es fantástico, no tienes que tomar decisiones
de qué usar cada 5 minutos, porque como comunidad ya se hizo esta decisión a travez
de procesos denominados RFC en github para realizar cambios. La estructura de las aplicaciones
es estándar, si has trabajado en una app ember, puedes trabajar en otra muy rápidamente
porque sabes dónde está y cómo funciona todo.

La URL en aplicaciones ember es tratada como una parte fundamental, ya que de la misma se puede derivar
el ruteo, estático y dinámico, y adicional parametros de consulta. Es el punto de entrada
hacia las rutas de la aplicación que a su vez manejan el modelo de datos que es transferido hacia
los templates que usan componentes para mostrar y manejar la interfaz al usuario.

Se puede hacer Test Driven Development muy fácilmente con tests unitarios para cada componente o utilidad
y tests e2e para ejecutar caminos complejos de interacciones de usuario.

Si a alguien le interesa más detalles de cómo funciona el framework, suscríbanse y dejenme saber.