2011-02-26 12 views
11

Estoy creando un servicio en el que deseo permitir a los usuarios finales editar plantillas HTML para páginas web que permitan el acceso a "variables" específicas para su inclusión en la plantilla.Rails Motores de plantillas para el usuario final: Liquid vs Moustache vs. Others?

Sé que el líquido fue diseñado para este propósito, es seguro (al menos relativamente) y está en uso de producción pesada. Sin embargo, considero que el lenguaje es bastante complejo para los usuarios finales en comparación con algo como Moustache.

Bigote suena genial, pero me preocupa la seguridad ... ¿alguna vez se ha utilizado para plantillas de usuario final?

Básicamente estoy en busca de un motor de plantillas puedo usar w/rieles para los usuarios finales que es:

  1. seguro - no permitirá la ejecución de código por el usuario ... al menos no en el servidor. Los usuarios podrán insertar javascript en el lado del cliente.
  2. Potente - permite a los usuarios finales crear prácticamente cualquier página web que pueden imaginar el uso de las "variables" suministrados y en el contexto de # 1
  3. simple - la sintaxis es clara y fácil para que los usuarios finales se aplican
  4. Puntos de bonificación si se admite la representación de la sintaxis de la plantilla en JavaScript y en otros idiomas.

Líquido meets 1 & 2, pero no 3-4. Moustache cumple con 2-4, pero no estoy seguro acerca de # 1 y eso no es negociable.

Agradecemos enormemente cualquier idea, experiencia o comentario.

Respuesta

3

Bigote es fantástico para la interpolación y no puedo imaginar que lo exponga a vulnerabilidades del lado del servidor si lo está utilizando para la evaluación de Javascript. Es la opción más simple y más poderosa. No sé si los no programadores lo entenderían, pero estoy seguro de que es más simple que Liquid.

Otra opción sería utilizar un conjunto de marcado de usuario más simple existente como BBcode o una biblioteca de edición de texto enriquecido como TinyMCE. Estos tienen una funcionalidad muy reducida, pero son más fáciles de usar para las personas promedio.

+1

Realmente necesito que la representación se realice en el lado del servidor por dos razones: 1. Google y otros bots de búsqueda deben poder indexar la página completamente renderizada con las "variables" ya expandidas 2. Al tener JS habilitado es bastante frecuente ahora, no quiero que sea un requisito de la aplicación – marcusmateus

+0

5min ?? @Winfield Necesita aclarar el n. ° 1. No me preocupaban las cadenas no guardadas en la plantilla, ya que permití JS en las plantillas ... se planteó como una preocupación en otro foro. Pero, realmente necesita tener la prestación sucede en el lado del servidor, por dos razones: 1. Google y otros robots de búsqueda tienen que ser capaces de indexar la página totalmente rendido w/las "variables" ya ampliado 2 . Aunque tener JS habilitado es bastante frecuente ahora no quiero que sea un requisito de la aplicación Estoy de acuerdo en que BBcode/TinyMCE son más simples, pero su uso realmente quitaría el poder de la aplicación (# 2) – marcusmateus

+0

Siempre que tenga cuidado con los métodos que expone en su vista, creo que Moustache será seguro y se adaptará a sus necesidades. La sintaxis no es horrible; es probable que sea tan fácil como pueda llegar en cuanto a un motor de plantilla. Consulte [la demostración] (http://mustache.github.com/#demo) para ver un ejemplo. –