Por qué Knockout no es una librería SPA

Últimamente tengo muchas conversaciones donde se hablan de aplicaciones SPA (Single Page Application) y en el momento de hablar de que librería me gusta más, siempre suele salir a la palestra Knockout y no puedo evitar poner cara de circunstancia, porque esta librería en concreto no me encaja en absoluto como SPA.

Parece ser que no queda muy claro cual su intención o que necesidad cubre. Por eso haré una pequeña comparación sobre diferentes librerías para poder despejar las dudas que se puedan tener sobre ellas.

Que es una aplicación SPA

Una aplicación ”Single Page Application” como bien indica su nombre, es aquella que tiene una pagina principal que se utiliza como contenedor de el resto de páginas. No necesita cargar completamente el documento,  es capaz de separar las vistas de los datos e inyectar el contenido de las paginas o vistas en el contenedor principal. De esa manera puede controlar la carga, la navegación, el histórico, etc. Eso nos permite ofrecer una experiencia de usuario más rica y tener el control total de la interfaz de usuario desde el cliente.

Por eso una buena librería para hacer SPA tendría que darnos una solución completa a estas necesidades:

  1. Routing:  Navegación e histórico.
  2. Datos: Tratamiento de datos con las llamadas AJAX
  3. DOM: interactuar con los objetos del documento.
  4. Mv* : Estructura del código y separando responsabilidades utilizando un patrón Modelo Vista …
    1. Data Binding: es importante que si separamos las vistas del modelo de datos, tengamos un mecanismo para que se comuniquen las dos partes de forma automática y tener un “Two-Way Data Bind” es una buena opción.
    2. Async: Para trabajar con procesos o llamadas a otros módulos lo mejor es utilizar asincrónica y utilizar Promises para facilitar esta tarea.
    3. DI: si utilizamos módulos AMD como componentes se tendría que poder hacer inyección de dependencias.
  5. Testing: esto ya es para nota

La Comparativa

Comparación de las principales librerías que se utilizan actualmente en el desarrollo Web:

Librerías

Datos

DOM

Routing

MV*

DataBind

DI

Testing

KnockoutJs

X

X

X

MVVM

X

X

AngularJs

JQlite

MVW

Durandal

JQuery*

MVW

KnockoutJs*

Require*

X

Backbone

X

X

MVC

X

X

X

* Tiene dependencia con esta librería para su funcionamiento.

  • Knockout:  Como se puede observar esta librería solo nos aporta una manera muy potente de enlazar nuestros datos con las vistas utilizando MVVM y utilizando Two-Way Data Bind. No tiene dependencias  con otras librerías es 100% JavaScript y no abarca todo lo que necesita una aplicación SPA por si sola.
  • Angular: Framework que abarca todo el desarrollo con JavaScript y nos evita depender de otras librerías. Además podemos hacer test unitarios de nuestro código.
  • Durandal: Es una librería que se apoya en otras para poder cubrir todas las necesidades de una aplicación SPA.
    • Knockout para el Data Binding,
    • Require para la inyección de dependencias
    • JQuery para el las llamadas AJAX e interactuar con el DOM.
  • Backbone: Una librería muy liviana, más dirigida en estructurar nuestro código utilizando un patrón MVC que dar cobertura a una aplicación de tipo SPA.

Conclusión

Como se ha podido comprobar en esta comparación Knockout no se puede comparar con las librerías o frameworks SPA, porque solo tiene un objetivo. Que es enlazar nuestro datos con las vistas utilizando un patrón MVVM.

Para conseguir una experiencia SPA completa, tendríamos que combinar Knockout con otras librerías como hace DurandalJS.

Espero que esta reflexión en voz alta deje fuera de las conversaciones sobre SPA a la pobre Knockout ;-)

image

Anuncios

2 comentarios en “Por qué Knockout no es una librería SPA

  1. Miguel Del Valle dijo:

    Hola Mark, yo actualmente estoy desarrollando SPAs en entornos .net MVC4 con Durandal y los resultados son impresionantes, os lo recomiendo.

    El único problema que queda por resolver de las SPAs en general es la visibilidad de sus contenidos para Google, que no es capaz -por el momento- de navegar por ellas para indexar sus contenidos, la buena noticia es que ya se están dando pasos en esa dirección.

    En mi opinión las SPAs están aquí para quedarse.

    Enhorabuena por tu blog.

Responder

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s