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.
¿Has visto NVelocity, un puerto .NET de Velocity? http://nvelocity.sourceforge.net/
Acabo de lanzar un proyecto de código abierto. Está dirigido principalmente a la creación de plantillas de correo electrónico, pero podría utilizar el analizador por sí mismo si así lo desea. Puede leer algunos detalles más y tomar el código fuente de mi blog.
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:
- NHaml
- Spark
- Brail (se puede usar de forma standalone )
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.
prueba este: Email Template Framework http://www.bitethebullet.co.uk/Email_Template_Framework.aspx
Funciona muy bien en ASP.NET y WinForms y todavía está en desarrollo activo. También hay muy buena documentación y fácil de excavar en ejemplos.
http://csharp-source.net/open-source/template-engines
http://joel.net/code/dotnet_templates.aspx
¡¡¡Espero que esto ayude!!!
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.
XCST (Plantillas extensibles C-Sharp)
<ul>
<c:for-each name=''n'' in=''System.Linq.Enumerable.Range(1, 5)'' expand-text=''yes''>
<li>{n}</li>
</c:for-each>
</ul>
SharpTAL - motor independiente en desarrollo activo y sin dependencias, rápido
plantilla de cadena de la gente de anltr.org con una versión de C # también .