【发布时间】:2010-09-07 17:46:16
【问题描述】:
我知道您可以在 ASP.NET MVC 中使用多种不同的视图引擎:
- 显然是 ASPX
- NVelocity
- 盲文
- NHaml
- 等...
默认的 ASPX 视图引擎似乎对我来说最有意义,它来自 ASP.NET WebForms 背景。
但是,我想了解每种方法的优缺点,看看大多数人都在使用什么。
StackOverflow 使用哪个?
【问题讨论】:
标签: asp.net-mvc
我知道您可以在 ASP.NET MVC 中使用多种不同的视图引擎:
默认的 ASPX 视图引擎似乎对我来说最有意义,它来自 ASP.NET WebForms 背景。
但是,我想了解每种方法的优缺点,看看大多数人都在使用什么。
StackOverflow 使用哪个?
【问题讨论】:
标签: asp.net-mvc
我使用Spark。它在 HTML 和代码之间有很好的流动。 Scott Hanselman 还通过他的每周源代码审查帖子对此进行了post。我真的很喜欢它。主要功能之一是pre-compilation 您的意见。
【讨论】:
“StackOverflow 使用哪个?”
网络表单。
我向 Jeff Atwood 询问了他对 Tag Soup 帖子的决定。他没有回复——我认为他正忙于寻找丢失的结束标签;-)
【讨论】:
NHaml 是我的最爱,因为它简洁。人们要么喜欢它,要么讨厌它,因为它看起来与传统的“插入代码的 HTML”模板系统(如 ASPX 或 NVelocity)非常不同。
编辑:
@本,
还有其他可以编译下来的视图引擎(NHaml 就是其中之一),因此它们确实支持自定义 HTML 助手。看到当前解释的视图引擎最终都以编译模型结束,我不会感到惊讶。
【讨论】:
微软最近宣布了一个新的视图引擎:Razor。
看起来很有趣: http://weblogs.asp.net/scottgu/archive/2010/07/02/introducing-razor.aspx
【讨论】:
地球上的大多数人只会使用 ASPX,因为这是他们所知道的。另一个出色的好处是编译性质......因此您不仅可以获得类型安全和智能感知,还可以获得性能优势。
我看到的缺点是它太冗长了。我将一个应用程序转换为 NVelocity,并惊讶于它看起来多么干净。问题是有很多东西不适用于 NVelocity(比如您自己的自定义视图助手),并且严重缺乏文档。
我在 MvcContrib 中添加了一项功能,您可以在其中注册自己的 HtmlExtension 类型,但在出现更好的解决方案之前,它更像是一个创可贴。
【讨论】:
我过去使用过 NVelocity。在大多数情况下,它使代码非常干净且易于遵循;然而,它通常最终只是一些 ViewData 变量,这些变量事先已被 XSLT 文件填充。所以我想我的视图引擎真的会是 XSLT(这是一个爱/恨的东西 - 扩展方法使它非常有用)和 NVelocity。
【讨论】:
我已经将 NVelocity 与 MonoRail 一起使用了一段时间,但最近在 Asp.Net MVC 和 MonoRail 中都切换到了Spark。语法对我来说似乎很自然,但我想这是可以预料的。 ;)
【讨论】: