programing

.net 템플릿 엔진을 추천해주시겠습니까?

jooyons 2023. 9. 7. 21:41
반응형

.net 템플릿 엔진을 추천해주시겠습니까?

저는 .net templating 엔진을 찾고 있습니다. - 너무 많이 의존하지 않는 단순하고 가볍고 안정적인 것입니다.현재 제가 필요한 것은 템플릿화된 평문과 html 이메일을 만드는 것뿐입니다.누가 나에게 좋은 추천을 해 줄 수 있습니까?

자바의 프리마커나 Velocity 라이브러리 같은 것이 도움이 된다면요.

[업데이트] 지금까지 답변 주셔서 감사합니다 - 감사합니다.나는 당신이 이 도서관들을 이용했을 때의 추천이나 전쟁 이야기에 정말 흥미를 느낍니다.차례대로 시도하지 않고 결정을 내리는 것이 최선인 것 같습니다.

여기 몇 가지가 더 있습니다.

NVelocity에 관해서는, 캐슬 사람들이 갈아서, 여기서 개발 중입니다.

이메일의 경우 NVelocity 이상이 필요한 적이 없습니다.

RazorEngine 마이크로소프트의 Razor 파싱 엔진을 기반으로 만들어진 템플릿 엔진입니다.

https://github.com/Antaris/RazorEngine

써본 적은 없지만 ASP가 있으면 재미있어요.NET MVC 배경, 당신은 새로운 것을 배울 필요가 없을 것입니다.

더 완전한 목록

  • ASP.Net 내장 WebForm View 엔진
  • ASP뷰
  • 브레일
  • NHaml(.)함의 순항)
  • 스파크
  • 엔벨로시티
  • StringTemplate.Net

코드스미스 제너레이터를 추천합니다.템플릿 기반 코드 생성기로 지속적인 업데이트와 활성 커뮤니티가 있습니다.다음은 CodeSmith Generator와 함께 제공되는 템플릿 목록입니다.

C# 버전을 가진 anltr.org polks의 문자열 템플릿도 있습니다.

핸들바, 레이저 엔진 및 샤프 테스트아래 TAL:

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 stackoverflow! Below you can find good movie list! Have a good day.";
    }
}


}

결과:

code results

방금 오픈소스 프로젝트를 발표했습니다.주로 이메일 템플릿 작성을 목적으로 하지만 원한다면 파서를 직접 사용할 수도 있습니다.좀 더 자세한 내용을 읽고 제 블로그에서 소스 코드를 가져올 수 있습니다.

http://thecodedecanter.wordpress.com/2010/07/19/town-crier-an-open-source-e-mail-templating-engine-for-net/

저는 콧수염(http://mustache.github.com/) 이 그 비용에 맞을지도 모른다고 생각합니다.

DotLiquid는 에 매우 좋은 템플릿 시스템입니다.그물.

루비의 리퀴드 마크업(Liquid Markup)에서 파생된 것으로 요구사항이 있습니다.NET Framework 3.5 이상.

이메일 템플릿 프레임워크 http://www.bitethebullet.co.uk/Email_Template_Framework.aspx 를 사용해 보십시오.

ASP에서는 잘 작동합니다.NET 및 WinForms는 현재 활발한 개발 중에 있습니다.또한 매우 좋은 설명서가 있으며 예를 쉽게 살펴볼 수 있습니다.

XCST(eXtensible 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>

NVelocity, a를 본 적이 있습니까?NET 포트 오브 벨로시티?http://nvelocity.sourceforge.net/

http://csharp-source.net/open-source/template-engines

http://joel.net/code/dotnet_templates.aspx

도움이 되길 바랍니다!!!

뉴벨로시티는 비록 오래되었지만 2003년에 마지막으로 출시되었습니다.

SharpTAL - 현재 개발 중이며 의존성이 없는 독립형 엔진, 빠른 속도

언급URL : https://stackoverflow.com/questions/340095/can-you-recommend-a-net-template-engine

반응형