Compilar el manillar-semplata en el código C# nativo para la representación HTML de Serverside de rendimiento y tipo Safe.
Este compilador es el resultado de la tesis de solteros de Jakob Demler que cubre el enfoque, las decisiones de diseño, los detalles de implementación y su evaluación y se puede encontrar aquí
Este proyecto se encuentra actualmente en una fase beta.
Se realizó una comparación de rendimiento con los microbistres desde el repositorio de manebars.js: https://github.com/wycats/handlebars.js/tree/master/bench
| Microbistique | manebars.js | CompiledHandleBars | Aceleración |
|---|---|---|---|
| arrayeach | 391 OPS/MS | 3039 OPS/MS | 7.77 |
| complejo | 120 OPS/MS | 1180 OPS/MS | 9.83 |
| datos | 295 OPS/MS | 1333 OPS/MS | 4.51 |
| profundidad1 | 228 OPS/MS | 3693 OPS/MS | 16.20 |
| profundidad2 | 63 OPS/MS | 1515 OPS/MS | 24.04 |
| recursión parcial | 125 OPS/MS | 1895 OPS/MS | 15.16 |
| parcial | 211 OPS/MS | 905 OPS/MS | 4.29 |
| caminos | 2060 OPS/MS | 4646 OPS/MS | 2.25 |
| cadena | 5563 OPS/MS | 13964 OPS/MS | 2.51 |
| variables | 1991 OPS/MS | 4027 OPS/MS | 2.02 |
Simplemente instale el paquete VSIX en el proyecto CustomTool y reinicie Visual Studio. Agregue una nueva plantilla de manillares a su solución (finalice en .hbs) y luego agregue "manillarscompiler" a la propiedad CustomTool del archivo. El compilador se invocará cada vez que se guarde la plantilla del manillar y creará un archivo {TemplateName} .hbs.cs que contiene el código generado.
Cada plantilla de manillares necesita un tipo que haga. Como ejemplo, una clase llamada "Personmodel" servirá:
namespace ViewModels
{
public class PersonModel
{
public string FirstName { get ; set ; }
public string LastName { get ; set ; }
public int Age { get ; set ; }
public List < string > EMailAddresses { get ; set ; }
}
}Ahora, debemos comunicar el tipo al ManeyBarsCompiler. Al comienzo de cada plantilla de manillares, debe haber un modeltoken condenado:
Para nuestro ejemplo, eso sería:
Tenga en cuenta que el tipo dentro del Modeltoken también puede ser una clase base o interfaz del Modelo de View Real que se pasa a la plantilla.
El resto de los manillares-templados sigue sintaxis y semántica de manillares estándar. Aquí está el ejemplo completo:
No es necesario registrar los parciales. Solo asegúrese de compilar lo parcial antes de la plantilla de manillares que usa esa parcial. Para todo lo demás se aplica la lógica estándar HANTANBARS.JS.
CompiledHandleBars permite el uso de funciones auxiliares. Estos deben ser estáticos, devolver una cadena y ser anotado por un atributo. Los parámetros se marcan si coinciden en el tiempo de compilación, por lo que es posible sobrecargar. Aparte de eso, no tienen restricciones y se pueden colocar en cualquier lugar de su base de código.
[ CompiledHandlebarsHelperMethod ]
pulic static string FullName ( PersonModel model )
{
return string . Concat ( model . FirstName , " " , model . LastName ) ;
} CompiledHandleBars ofrece una funcionalidad diferente con respecto a los diseños: cualquier placa manual se puede renderizar dentro de un manillarslaut. HanyebarsLayouts difieren de las placas de manejo normales debido a un token especial {{cuerpo}}}:
Para renderizar una plantilla de manillares en ese diseño, use el token {{diseño}} justo después del token {{modelo}}:
El resultado de esa plantilla es igual a la siguiente plantilla:
Debido a la diferente enfoque de la versión HandleBars.js (por ejemplo, estática, las plantillas de manillares escrita estática), el compilador debe saber qué tipo se entiende su plantilla de manillares. Esta información es comunicada al compilador por un Modeltoken especial. Su sintaxis es sencilla:
Por ejemplo:
Esta ficha debe estar al comienzo de cada plantilla de manillares.
Se necesitan los siguientes requisitos previos para poder construir la solución: