【问题标题】:RazorEngine vs RazorTemplates vs RazorMachine [closed]RazorEngine vs RazorTemplates vs RazorMachine [关闭]
【发布时间】:2013-08-17 17:01:40
【问题描述】:

谁能解释一下两者之间的区别,优点/缺点是什么

RazorEngine

RazorTemplates

RazorMachine

我需要选择一个来生成电子邮件。这些要求很常见:快速、易于使用。似乎它们都具有我需要的所有功能,但由于我是 Razor 新手,我不太清楚哪个更好。

谢谢。

【问题讨论】:

    标签: .net razor razorengine


    【解决方案1】:

    我自己尝试了所有 3 个库,发现了一些不同之处。

    • RazorEngine - 最简单且效果最好的一种,默认支持缓存。
    • RazorTemplates - 不支持某些 Razor 指令(例如 @model)并使用大量 dynamic 类型。可以使用预编译的模板。
    • RazorMachine - 非常难以预测,而且设计奇特,需要使用全局单个实例而不是静态类。

    就我而言,我选择了 RazorEngine。这里还有如何使用这些库的代码:

    RazorEngine

    string html = Razor.Parse(templateContent, model, templatePath);
    

    Razor模板

    if (!_templatesCache.ContainsKey(templatePath))
    {
        var compiledTemplate = Template.Compile(templateContent);
        _templatesCache.Add(templatePath, compiledTemplate);
    }
    
    string html = _templatesCache[templatePath].Render(model);
    

    RazorMachine

    private readonly Lazy<RazorMachine> _lazyRazorMachine = 
        new Lazy<RazorMachine>(() => new RazorMachine());
    //...
    
    var rm = _lazyRazorMachine.Value;
    string html = rm.ExecuteContent(templateContent, model, null, true).Result;
    

    还有一些性能测试,在同一个模板上对每个库测试了 2 次,它们的性能都差不多,差别不大:

    RazorEngine - 1731 毫秒,0.1 毫秒

    RazorTemplates - 1753 毫秒,0.1 毫秒

    RazorMachine - 1608 毫秒,0.1 毫秒

    【讨论】:

    • 您是否在多个测试中使用同一个 RazorMachine 对象实例?这应该是一个管理所有缓存和预编译的应用程序级单例:github.com/jlamfers/RazorMachine/wiki/Examples
    • @Chris Hynes 是的,原来问题是因为我每次都创建了一个新实例,现在我修复了代码。尽管事实仍然存在,但图书馆的工作方式非常出人意料。
    • RazorEngine 如何处理模型、自定义视图类、布局、视图开始等高级内容? RazorMachine,虽然令人费解,但它是我发现的唯一真正适用于所有 Razor 功能的东西。我将几个与 RazorMachine 一起使用的类放在一起,以提供一个完整的 Razor 类环境,包括布局、viewstart 等,但基于嵌入式资源文件运行。这让我可以使用来自 Web 项目、服务项目或您拥有的相同模板。
    • @Chris Hynes 其他库不应使用配置文件、_viewstart 和 _layout 文件复制 asp.net mvc 项目的结构。它们宁可用于单独的类库中,用于简单的电子邮件或页面生成。虽然它们支持部分包含、模型和自定义方法,但它们不支持整个 asp.net 视图基础架构。
    • @vorrtex 在非asp.net项目的VS 2015中可以调试哪些?那将是一个很酷的答案!
    【解决方案2】:

    使用,https://github.com/smsohan/MvcMailer 它确实有助于制作基于 MVC Razor 的电子邮件。

    【讨论】:

    • 但仅当您从 Asp.net MVC 应用程序向您发送电子邮件时。不幸的是,不能在类库中使用 MvcMailer。在企业应用程序中,电子邮件通常是从业务层发送的……但它是一个不错的库……;)
    【解决方案3】:

    我使用 RazorEngine 生成电子邮件,它工作得很好。查看其他 2 个项目,它们似乎与 RazorEngine 一样 - 托管 MS Razor。无论如何,可以根据您的目的推荐后者。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2023-04-09
      • 2011-07-08
      • 2017-06-20
      • 2012-08-07
      • 2016-09-19
      • 2010-09-27
      相关资源
      最近更新 更多