¿Cuáles son los beneficios de usar Knockout.js?

No veo KnockOut (KO) y JQuery como tecnologías competidoras.

KO no está diseñado para ser un reemplazo independiente de las bibliotecas JavaScript existentes (es decir, jQuery, Prototype, MooTools). Debería pensarse más en la línea de una “mejora a” en lugar de un “reemplazo” de estas bibliotecas.

No estoy seguro de lo que Dan quiso decir al decir que KO no vincula nuestros modelos al DOM porque, según lo veo, eso es exactamente lo que debe hacer.

KO permite que el desarrollador aproveche el patrón Model View ViewModel (MVVM) para crear un ViewModel específico de la IU que siempre esté perfectamente sincronizado con los elementos DOM de la IU utilizados para mostrar, actualizar, eliminar o crear datos en el ViewModel.

Esto significa que con una codificación relativamente pequeña, nunca tendrá que preocuparse por perder datos que han sido modificados, agregados o eliminados por la interacción del cliente. Los datos en ViewModel se rastrean y actualizan constantemente sin más participación del desarrollador.

MVVM es una abstracción poderosa en sí misma, pero también se puede implementar en el servidor con POCO (y supongo que con POJO); sin embargo, un beneficio adicional de KO es que, como todos los JS, se ejecuta en el cliente y puede minimizar el tamaño de las respuestas de nuestro servidor y / o el procesamiento del servidor, lo que aumenta la eficiencia de nuestra aplicación a través de implementaciones de aplicación de página única (SPA).

Entonces, en conclusión rápida, KO proporciona una abstracción JS del lado del cliente que mejora su biblioteca de JavaScript de las siguientes maneras:

  1. Simplifica enormemente la sincronización entre la interfaz de usuario del cliente y el servidor.
  2. Aprovecha el patrón de diseño MVVM para aumentar la modularidad y proporcionar una separación limpia de preocupaciones e implementaciones cohesivas.
  3. Mantiene la gestión del estado del modelo de IU en el cliente (donde pertenece).
  4. Disminuye (potencialmente) el tamaño de las respuestas del servidor y el tráfico cliente / servidor en general (acelerando así nuestras aplicaciones).

Recomiendo leer el patrón MVVM y cómo difiere de MVC. Los siguientes recursos son ejemplos en los que ViewModel está centrado en el servidor, pero le darán una buena idea de los beneficios del diseño.

Una vez que vea los beneficios generales del diseño, verá más fácilmente las ventajas adicionales de la sincronización (y otras características) proporcionadas por KO.

Model-View-ViewModel (MVVM) explicado

Patrón MVVM hecho simple

Conceptos básicos de los patrones de diseño de interfaz de usuario MVC, MVP y MVVM

Acabo de comenzar a jugar con él, pero el mayor beneficio que puedo ver es que mantiene un modelo de datos que no está vinculado al DOM y automatiza la asignación de datos en la pantalla. Tiene algunas funciones para alimentar esos datos al navegador desde el servidor y alimentar los cambios al servidor.

Lo principal, en la práctica, es que nunca más tendrás que volver a escribir un controlador onChange. Vincula un elemento a su fuente de datos y luego todo lo que muestra que los datos se mantienen perfectamente sincronizados.

Las ventajas son numerosas, algunas características destacadas se destacan a continuación:

  • Viabilidad para conectarse en cualquier momento con los elementos de la interfaz de usuario en el modelo de datos.
  • Cree modelos de datos complejos y dinámicos con facilidad.
  • El enlace de datos ayuda a manipular los datos almacenados, reflejándolos en la interfaz de usuario y actualizando la interfaz de usuario con cambios regulares de back-end, si los hay.
  • Admite el modelo de programación basada en eventos y ofrece un 100% de personalización.
  • Admite IE, Firefox, Safari, Bing, Chrome y muchos más navegadores principales.
  • Ayuda a evitar la hinchazón del diálogo HTTP con la lógica de presentación y la presentación de marcado en el servidor.
  • Asegura la aplicación de las reglas comerciales, la seguridad de los datos y un mayor control en la página web.
  • También ofrece integridad referencial y muchas características de validación con respecto al flujo de trabajo para seguridad adicional.
  • Knockoutjs ofrecen una extensibilidad sobresaliente. Tiene numerosos puntos de extensión y utilidades para crear una aplicación.

Hemos escrito un artículo sobre esto, lea más desde aquí Ventajas de Knockoutjs