viewcomponent tag net mvc for asp asp.net templates viewengine templating-engine

asp.net - tag - ¿Puedes recomendar un motor de plantilla.net?



tag helpers asp net core (15)

Estoy buscando un motor de plantillas .net - algo simple, liviano, estable con no demasiadas dependencias. Todo lo que necesito para este momento es crear texto sin formato y correos electrónicos html. ¿Alguien puede darme una buena recomendación?

Si Freemarker algo, algo así como las librerías Freemarker o Velocity Java.

[ACTUALIZACIÓN] Gracias por las respuestas hasta ahora, muy apreciadas. Realmente estoy probado en recomendaciones o historias de guerra desde cuando usaste estas bibliotecas. Parece ser la mejor manera de tomar una decisión sin intentar cada uno por turno.




Algunas pruebas con Handlebars, RazorEngine y SharpTAL a continuación:

namespace ConsoleApplication4 { class Program { static void Main(string[] args) { Stopwatch sw = new Stopwatch(); //RAZOR string razorTemplate = @"@model ConsoleApplication4.Test <h1>@Model.Title</h1> @if(Model.Condition1) { <span>condition1 is true</span> } <div> @foreach(var movie in Model.Movies) {<span>@movie</span>} </div>"; //burning Engine.Razor.RunCompile(razorTemplate, "templateKey", typeof(Test), new Test()); sw.Start(); var result1 = Engine.Razor.RunCompile(razorTemplate, "templateKey", typeof(Test), new Test()); sw.Stop(); Console.WriteLine("razor : "+sw.Elapsed); //SHARPTAL string sharpTalTemplate = @"<h1>${Title}</h1> <span tal:condition=""Condition1"">condition1 is true</span> <div tal:repeat=''movie Movies''>${movie}</div>"; var test = new Test(); var globals = new Dictionary<string, object> { { "Movies", new List<string> {test.Movies[0],test.Movies[1],test.Movies[2] } }, { "Condition1", test.Condition1 }, { "Title", test.Title }, }; var tt = new Template(sharpTalTemplate); tt.Render(globals); sw.Restart(); var tt2 = new Template(sharpTalTemplate); var result2 = tt2.Render(globals); sw.Stop(); Console.WriteLine("sharptal : " + sw.Elapsed); //HANDLEBARS string handleBarsTemplate = @"<h1>{{Title}}</h1> {{#if Condition1}} <span>condition1 is true</span> {{/if}} <div> {{#each Movies}} <span>{{this}}</span> {{/each}} </div>"; var tt3 = Handlebars.Compile(handleBarsTemplate); sw.Restart(); var result3 = tt3(new Test()); sw.Stop(); Console.WriteLine("handlebars : " + sw.Elapsed); Console.WriteLine("-----------------------------"); Console.WriteLine(result1); Console.WriteLine(result2); Console.WriteLine(result3); Console.ReadLine(); } } public class Test { public bool Condition1 { get; set; } public List<string> Movies { get; set; } public string Title { get; set; } public Test() { Condition1 = true; Movies = new List<string>() { "Rocky", "The Fifth Element", "Intouchables" }; Title = "Hi ! Below you can find good movie list! Have a good day."; } } }

y resultados:


Aquí hay un par más:

Acerca de NVelocity, ha sido creado por los chicos de Castle, se está desarrollando here

Para los correos electrónicos, nunca he necesitado más que NVelocity.


Creo que Moustache (http://mustache.github.com/) también puede ajustarse a la factura.


Lista más completa

  • Motor de visualización WebForm incorporado de ASP.Net
  • ASPView
  • Candaliza
  • NHaml (puerto .Net de Haml)
  • Chispa
  • NVelocity
  • StringTemplate.Net

NVELOCITY, aunque es viejo, último lanzamiento en 2003, suficiente.


RazorEngine, un motor de creación de plantillas basado en el motor de análisis razurador de Microsoft.

https://github.com/Antaris/RazorEngine

No lo he usado, pero me parece interesante porque si tienes un fondo ASP.NET MVC, no necesitarás aprender algo nuevo.


Recomendaría CodeSmith Generator . Es un generador de códigos basado en plantillas, con actualizaciones constantes y una comunidad activa. Aquí hay una lista de plantillas que se envían con CodeSmith Generator.




DotLiquid es un sistema de plantillas muy bueno para .NET.

Se deriva de Ruby''s Liquid Markup, con requisitos .NET Framework 3.5 o superior.



SharpTAL - motor independiente en desarrollo activo y sin dependencias, rápido