Mustache es un sistema de plantillas web . Se describe como un sistema sin lógica porque carece de instrucciones de control de flujo explícitas, como condicionalesif o bucles for ; sin embargo, tanto los bucles como la evaluación condicional se pueden lograr mediante etiquetas de sección que procesan listas y funciones anónimas (lambdas). Se llama "Mustache" (bigote) debido al uso intensivo de llaves , que se asemejan a un bigote de lado . Mustache se utiliza principalmente para aplicaciones móviles y web. [ 1 ] [ 2 ]else{ }
Las implementaciones están disponibles en ActionScript , C++ , Clojure , CoffeeScript , ColdFusion , Common Lisp , Crystal , D , Dart , Delphi , Elixir , Erlang , Fantom , Go , Haskell , Io , Java , JavaScript , Julia , Lua , .NET , Objective-C , OCaml , Perl , PHP , Pharo , Python , R , Racket , Raku , Ruby , Rust , Scala , Smalltalk , Swift , Tcl , CFEngine y XQuery .
Historia y principios
Mustache-1 se inspiró en ctemplate y et, [ 3 ] y comenzó como una distribución de GitHub a finales de 2009. Una primera versión del motor de plantillas se implementó con Ruby , ejecutando textos de plantilla YAML . Los principios principales (conservados) fueron:
- Sin lógica : no hay instrucciones de flujo de control explícitas, todo el control se basa en los datos .
- Fuerte separación de responsabilidades : lógica y presentación : es imposible integrar la lógica de la aplicación en las plantillas.
Los datos de entrada pueden ser una clase , de modo que los datos de entrada se pueden caracterizar como una vista modelo-vista-controlador (MVC). La plantilla Mustache no hace más que hacer referencia a métodos en la vista (datos de entrada) . [ 3 ] Toda la lógica, las decisiones y el código están contenidos en esta vista , y todo el marcado (por ejemplo, XML de salida ) está contenido en la plantilla . En un contexto modelo-vista-presentador (MVP): los datos de entrada son del presentador MVP , y la plantilla Mustache es la vista MVP .
Ejemplos
Datos
Los datos JSON se introducen en las plantillas de Mustache, lo que da como resultado una salida. Aquí hay algunos datos de ejemplo:
{ "nombre" : "Mundo" , "mayor que" : ">" }Variables
Una plantilla simple de Mustache como la que se muestra a continuación, combinada con los datos anteriores, produciría el siguiente resultado Hello World: .
Mustache HTML escapa los datos por defecto. Por ejemplo, lo siguiente se mostraría como .2 > 1
Para desactivar el escape, utilice un &. Lo siguiente se mostraría como 2 > 1.
Sentencias condicionales y bucles foreach
A continuación se muestra una plantilla con la etiqueta section. Cuando xes un valor booleano , la etiqueta section actúa como una condición if . Cuando xes un array , actúa como un bucle foreach .
La variable especial {{.}}hace referencia al elemento actual al recorrer una matriz, o al elemento que se comprueba en una condición.
Incluyendo otras plantillas
Puedes indicarle a una plantilla Mustache que cargue otra plantilla Mustache dentro de ella usando el >símbolo.
Comentarios
Los comentarios se indican con un signo de exclamación.
Detalles técnicos
El resaltado de sintaxis está disponible en Atom , Coda , Emacs , [ 4 ] TextMate , Vim y Visual Studio Code . [ 5 ]
La compatibilidad con plantillas Mustache está integrada en muchos frameworks de aplicaciones web (por ejemplo, CakePHP ) . La compatibilidad con JavaScript incluye tanto la programación del lado del cliente con muchas bibliotecas de JavaScript y frameworks Ajax como jQuery , Dojo y YUI , como la programación del lado del servidor con Node.js y CommonJS .
Especificación e implementaciones
Existen numerosas implementaciones de Mustache Engine , y todas ellas cumplen con una especificación formal común (véanse los enlaces externos), lo que da como resultado una sintaxis común para los usuarios finales.
A mayo de 2026, la última SPEC_VERSION era 1.4.3. [ 6 ]
Variaciones y derivados
Mustache inspiró numerosas bibliotecas de plantillas JavaScript que se bifurcaron de la simplicidad original para agregar cierta funcionalidad o uso.
Bigote daliniano
Handlebars.js [ 7 ] se describe a sí mismo como:
Handlebars.js es una extensión del lenguaje de plantillas Mustache, creado por Chris Wanstrath. Tanto Handlebars.js como Mustache son lenguajes de plantillas sin lógica que mantienen la vista y el código separados, como todos sabemos que debería ser. [ 8 ]
Handlebars se diferencia de su predecesor en que, dentro de las expresiones de bloque (similares a las secciones en Mustache), los ayudantes permiten funciones personalizadas mediante código explícito escrito por el usuario para ese bloque.
Véase también
Referencias
- ^ Avola, G.; Raasch, J. (2012). "Rompido desarrollo web móvil" . ISBN 9781118348123.
- ↑ Cady, J. (2011). Programación funcional aplicada a plantillas de desarrollo web: Informe de MS Project (PDF) (Informe).
- 1 2 "Bigote" . GitHub . 19 de abril de 2022.
- ↑ "Inicio" . web-mode.org .
- ↑ "Bigote - Visual Studio Marketplace" . Visualstudio.com . Microsoft. 18 de agosto de 2019.
- ↑ "Lanzamientos" . Mustache . GitHub. 10 de mayo de 2026.
- ↑ Katz, Yehuda (2011–2019). "Handlebars: Plantillas minimalistas con esteroides" . Handlebarsjs.com .
- ↑ wykatz, NPM. "html+handlebars NPM" . Detalles del paquete html+handlebars NPM . Node Package Manager . Consultado el 20 de diciembre de 2016 .
Enlaces externos
- Sitio web oficial
- Bigote en GitHub
- Bibliotecas informáticas gratuitas
- Motores de plantillas
- Bibliotecas de JavaScript