以下是对车把,RazorEngine和SharpTAL的一些测试:
namespace ConsoleApplication4
{
class Program
{
static void Main(string[] args)
{
Stopwatch sw = new Stopwatch();
//RAZOR
string razorTemplate = @"@model ConsoleApplication4.Test
@Model.Title
@if(Model.Condition1)
{
condition1 is true
}
@foreach(var movie in Model.Movies)
{@movie}
//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 = @"
${Title}
condition1 is true
var test = new Test();
var globals = new Dictionary
{
{ "Movies", new List {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 = @"
{{Title}}
{{#if Condition1}}
condition1 is true
{{/if}}
{{#each Movies}}
{{this}}
{{/each}}
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 Movies { get; set; }
public string Title { get; set; }
public Test()
{
Condition1 = true;
Movies = new List() { "Rocky", "The Fifth Element", "Intouchables" };
Title = "Hi stackoverflow! Below you can find good movie list! Have a good day.";
}
}
}
结果: