2010-09-22 19 views
6

Estoy evaluando http://github.com/janl/mustache.js¿Hay algo que no pueda hacer con el bigote?

y estoy pensando en cómo va a funcionar en general con el tiempo. Si solo construyo un objeto gigante, ¿es suficiente el bigote para transformarlo en cualquier forma de HTML?

Entonces, mi pregunta es. ¿Hay algo que el bigote no pueda hacer?

(Mi pensamiento es que es simplemente la transformación del árbol de JSON a HTML, pero no estoy seguro de cómo validar que o ganar suficiente confianza para apostar en contra de ella)

más aclaraciones

Supongamos que todo lo que tenía era un objeto gigante y luego le di una plantilla de bigote en una iteración; ¿Hay algo en HTML que no se puede expresar en bigote a través de su lenguaje?

+1

Voto en la wiki de la comunidad. – vol7ron

+3

Dado el nombre, espero que puedas hacer que las mujeres se desmayen y lanzan una pelota de béisbol mala. – NickHeidke

Respuesta

8

Dado que Moustache es solo un lenguaje de plantilla en JavaScript, puede hacer todo lo que ya puede hacer en JavaScript, y JavaScript está completo. Entonces no, no hay nada que no se pueda hacer en Moustache; de hecho, no hay nada que puedas hacer en Moustache que no puedas hacer tú mismo en JavaScript, simplemente hace que algunas cosas sean más convenientes.

Al evaluar algo como esto, en lugar de determinar qué puede y qué no puede hacer, es más útil preguntar "¿hace que las cosas que necesito hacer fácil" y "cometer los errores que quiero"? evitar difícil de hacer ".

Por ejemplo, una manera de evaluarlo sería si facilita evitar los ataques cross-site scripting (XSS). De acuerdo con la documentación "bigote.js escapa a todos los valores cuando usa la sintaxis estándar de bigote doble", por lo que parece que ayuda a prevenir este tipo de ataques.

Para hacer un mejor trabajo de evaluación, deberá proporcionar más detalles sobre cuáles son sus requisitos. ¿Que estás tratando de hacer? ¿Con qué necesitas integrarte?

edición

Incluso después de su aclaración, todavía no se sabe exactamente lo que estás buscando. Incluso si se limita a expandir una sola plantilla de bigote con una única vista como entrada, puede producir cualquier cadena arbitraria y, por lo tanto, cualquier HTML arbitrario con solo darle esa cadena como entrada.

Si estás preguntando si puede realizar cualquier cálculo arbitraria dada una plantilla y una vista para hacer, entonces la respuesta a eso también es sí, porque bigote le permite llamar a funciones en su plantilla, y esas funciones están escritos en Javascript, que es Turing completo.

Pero ambas respuestas son triviales; puede producir cualquier resultado dado proporcionándolo como entrada, o puede hacer cualquier cálculo dado usando una sección de orden superior. Como dije anteriormente, lo que es posible hacer con él es menos interesante que lo que es fácil que ver con eso, y qué errores son difícil hacer con él.

Supongo que una debilidad, que puede ser del tipo que está buscando, es que si necesita más potencia de la que proporciona el sistema Mustache, necesita pasar esas funciones como parte de la vista. Por lo tanto, debe combinar el objeto que se muestra con el código que se usará para mostrarlo.Y si elimina la capacidad de invocar Javascript desde las vistas que se pasan a las plantillas, entonces limita severamente lo que puede hacer. Dado el hecho de que estos objetos se conocen como "vistas", parece que es por diseño que se mezclan en la lógica de presentación con ellos; esto es muy diferente a los sistemas de plantillas en los que permite que la plantilla extraiga valores directamente de los objetos de su modelo.

3

Sí, hay muchas cosas que no se pueden hacer en el bigote. Moustache es más simple que algunos otros sistemas de plantillas completas (como el de Django). Moustache es un sistema de plantilla muy mínimo que lo alienta a (a través de su falta de características) a implementar plantillas "sin lógica". Esto significa que cierto procesamiento que puede hacer en otros sistemas de plantillas debe hacerse en cambio en un código que modifique los datos que se envían a la plantilla.

No es un mal sistema de plantillas, es solo un sistema mínimo que pretende ser simple y rápido.

Entonces, yo diría que la respuesta a esta pregunta es: "Sí, hay cosas que no se pueden hacer en Moustache (en comparación con algunos otros sistemas de plantillas)".

Cuestiones relacionadas