tutorial significado redes backbone data-binding backbone.js template-engine marionette rivets.js

data-binding - redes - backbone significado



Backbone: enlace de modelo a plantilla y de plantilla a modelo (1)

He usado estos

Mustache.js

Pro''s: no solo bigote admite el enlace variable, sino que también puede manejar el enlace de funciones. Por ejemplo, puedes tener

<a href="{{test}}" >click me </a>

Y luego en su opinión tiene un método llamado prueba. Esto ahorra una gran cantidad de clases / id asignadas para vincular y enlazar eventos en la clase de Vista.

Con: no me gusta la sintaxis de esto.

A continuación, uso coffeescript en Ruby on Rails, que tiene una compilación en el sistema de plantillas jst eco. un profesional es, usted tiene las plantillas en archivos separados. En la carga de la página se vinculan a una variable global en el dom. Estos son minificados y es mucho mejor que una etiqueta de plantilla de pseudo script. Otro profesional es, escribes if else y para bucles como lo haces en ruby. El inconveniente es que usan etiquetas de afeitar y no permiten una fácil mezcla con el código del servidor (como una traducción).

Otra biblioteca es, por supuesto, subraya el motor de plantillas. Muy simple, pero bastante poderoso. Proside, ya lo tienes disponible (se necesita subrayado para la red troncal). Lo malo es que no se puede (por defecto) cargar una plantilla desde un archivo externo. He resuelto esto usando el código del servidor (require_once, render partial). Sin embargo, si usa require.js, junto con el complemento de texto ( http://requirejs.org/docs/download.html#text ), puede cargar plantillas como una dependencia.

Estoy en proceso de integrar Backbone y Backbone.Marionette en un proyecto de aplicación web existente. Planeamos dejar todas las funcionalidades existentes en el proyecto solo por el momento, pero cualquier funcionalidad nueva aprovecharemos la estructuración Backbone y los principios de Marionette. Uno de los primeros pedidos es decidir sobre una biblioteca de representación de plantillas HTML, así como una solución de enlace de datos para estas plantillas. Anteriormente, hemos estado utilizando JsRender y JsViews para todas nuestras necesidades de plantillas y enlace de datos, pero estamos dispuestos a explorar nuevas avenidas para nuestra nueva funcionalidad. Básicamente, he estado investigando varias soluciones y ahora necesito algunos consejos o ideas sobre qué elegir. Esto es lo que he visto hasta ahora:

Backbone.StickIt :

Pros: parece seguir la idea de separación de Backbone en cuestiones que ayudan a mantener sus plantillas muy "limpias".

Contras: parece que tiene que escribir un poco más de código en sus vistas para definir enlaces. Además, parece que no tiene la capacidad de realizar un renderizado condicional, por lo que siempre debe renderizar la plantilla completa y simplemente alternar la visualización de ciertos elementos.

Rivets.js :

Pros: Maneja un poco más opciones de enlace de datos dentro de la plantilla sin hacerlo demasiado desordenado.

Contras: Además, parece carecer de interpretación condicional.

Knockback / Knockout :

Pros: maneja todo tipo de necesidades de enlace de datos a través de atributos.

Contras: Fácil de "ensuciar" la plantilla con convertidores. Debes agregar otro paso para crear modelos de vista Knockout desde modelos Backbone.

JsViews :

Pros: Similar a las habilidades de Knockout pero con una sintaxis diferente. Maneja la representación condicional.

Contras: En el pasado ensuciamos nuestras plantillas agregando demasiada lógica comercial dentro de la plantilla, pero eso puede ser un problema de nuestro desarrollo que podemos corregir. Es necesario crear una funcionalidad que vincule la funcionalidad de observabilidad de JsViews con los eventos del modelo Backbone. Otras bibliotecas como StickIt y Knockback manejan esto automáticamente.

También buscamos en Backbone.ModelBinder, que está en algún lugar entre StickIt y Rivets.

¿Puede alguien compartir las decisiones que han tomado y por qué eligieron un plugin / biblioteca sobre otro? También estoy abierto a otras sugerencias también. Gracias.