41

在阅读了Scott Guthrie的关于ASP.NET MVC的新Razor视图引擎的博客文章并阅读了比较可用视图引擎的这个问题之后。

Razor 似乎解决了默认视图引擎的大部分问题。作为开发人员,哪些功能差异会让您成为一个令人信服的选择?缺少哪些功能会阻止您使用它?

4

6 回答 6

23

可单元测试:新的视图引擎实现将支持对视图进行单元测试的能力(不需要控制器或 Web 服务器,并且可以托管在任何单元测试项目中——不需要特殊的应用程序域)。

最后!!!无法相信微软花了将近 8 年的时间才终于推出了支持此功能的视图引擎。

于 2010-07-04T14:12:42.533 回答
22

除了标记语言之外,还有更多可以查看的引擎。我会错过的几个 Spark 功能:

  • 使用相同的标记语言而不是 C#(宏)编写 html 扩展 - 我看到 Razor 也支持这一点,我希望它支持方法/参数覆盖;
  • 自定义标签(写 _Tag.spark 使用 <Tag />);
  • 自动生成的变量,如 varIsFirst、varIndex 等;
  • 特殊的表达式形式(?{} 用于条件属性,$!{} 用于跳过错误等);
  • 不错的主/部分布局支持,包括部分指定标记的一部分应该只在主中呈现一次的能力(例如脚本包含);
  • 您仍然可以拥有 WebForms 标记 - 非常适合兼容性和增量升级;
  • 支持在彼此内部使用 "" 和 '' 引号(非常有用)。

我更喜欢循环/ifs 的 Spark 语法——混合 HTML <> 和 C# {} 大括号看起来不太好——但这纯粹是个人意见。

Razor 中也有非常有前途的功能,例如内联模板。鉴于 Spark 创建者被微软聘用,我认为 Razor 有希望写得很好,非常有用,并且支持良好的视图引擎。当然,我不会用 Razor 重写数百个 Spark 视图(尽管我确实用 Spark 重写了几十个 WebForms 视图)。但我肯定会认真研究 Razor - 我只是从你的问题中发现了这一点,谢谢 - 我现在看到的看起来很有希望。当然,它不与 WebForms 竞争(任何视图引擎都比 WebForms 更好),但如果您还没有过多地投资于另一个视图引擎,它看起来是一个新的 ASP.NET MVC 项目的不错选择。

于 2010-07-04T14:04:36.057 回答
15

对我来说,有三个令人信服的理由:

  1. 编译- Razor 视图可以编译成 DLL。最后,我们在 .NET Web 项目中获得了适当的可重用性。我可以拥有一个知道如何显示自身的业务对象,而无需在 Web 项目的某些部分中将该代码作为 .ascx 文件浮动。

  2. 可测试性——当它被编译成一个类时,我可以编写一个单元测试并向它抛出对象的模拟实例,以查看 HTML 是否正确。

  3. IntelliSense简洁语法很好,但不是最重要的部分。

于 2010-07-07T08:07:31.640 回答
4

显然我还没有在实践中评估过它,但是它比 ASPX 引擎更简洁的事实是最引人注目的特性来诱导切换。我只希望它也能更好地自动格式化。它将得到智能感知的支持并与 MVC 一起交付,这一事实使其成为启动新项目的自然选择。在我进行转换之前,我将在一个小项目上给它一个公平的机会。仅仅通过阅读这篇文章,我没有看到我目前正在使用 ASPX 引擎做的任何事情。

更新:我已经使用 Razor 一年多了,并且永远不会回到 ASPX 引擎。语法看起来非常自然和富有表现力。

于 2010-07-04T13:26:10.757 回答
0

Razor 使用括号,也就是用于foreach东西。Spark 在这里使用 XML 标签。

因此,Spark 完全支持每个 XML 处理器解析和分析视图文件。

Mabye 这不是什么大事,但显示了一致性和可扩展性。

于 2010-07-05T11:35:25.717 回答
0

除了更简洁的外观,布局部分的灵活性看起来非常好,声明性 HTML 帮助器看起来非常有用。到目前为止,使用它没有看到任何缺点,但当然必须在实践中尝试一下。

于 2010-07-04T14:06:05.997 回答