在阅读了Scott Guthrie的关于ASP.NET MVC的新Razor视图引擎的博客文章并阅读了比较可用视图引擎的这个问题之后。
Razor 似乎解决了默认视图引擎的大部分问题。作为开发人员,哪些功能差异会让您成为一个令人信服的选择?缺少哪些功能会阻止您使用它?
在阅读了Scott Guthrie的关于ASP.NET MVC的新Razor视图引擎的博客文章并阅读了比较可用视图引擎的这个问题之后。
Razor 似乎解决了默认视图引擎的大部分问题。作为开发人员,哪些功能差异会让您成为一个令人信服的选择?缺少哪些功能会阻止您使用它?
可单元测试:新的视图引擎实现将支持对视图进行单元测试的能力(不需要控制器或 Web 服务器,并且可以托管在任何单元测试项目中——不需要特殊的应用程序域)。
最后!!!无法相信微软花了将近 8 年的时间才终于推出了支持此功能的视图引擎。
除了标记语言之外,还有更多可以查看的引擎。我会错过的几个 Spark 功能:
我更喜欢循环/ifs 的 Spark 语法——混合 HTML <> 和 C# {} 大括号看起来不太好——但这纯粹是个人意见。
Razor 中也有非常有前途的功能,例如内联模板。鉴于 Spark 创建者被微软聘用,我认为 Razor 有希望写得很好,非常有用,并且支持良好的视图引擎。当然,我不会用 Razor 重写数百个 Spark 视图(尽管我确实用 Spark 重写了几十个 WebForms 视图)。但我肯定会认真研究 Razor - 我只是从你的问题中发现了这一点,谢谢 - 我现在看到的看起来很有希望。当然,它不与 WebForms 竞争(任何视图引擎都比 WebForms 更好),但如果您还没有过多地投资于另一个视图引擎,它看起来是一个新的 ASP.NET MVC 项目的不错选择。
对我来说,有三个令人信服的理由:
编译- Razor 视图可以编译成 DLL。最后,我们在 .NET Web 项目中获得了适当的可重用性。我可以拥有一个知道如何显示自身的业务对象,而无需在 Web 项目的某些部分中将该代码作为 .ascx 文件浮动。
可测试性——当它被编译成一个类时,我可以编写一个单元测试并向它抛出对象的模拟实例,以查看 HTML 是否正确。
IntelliSense和简洁语法很好,但不是最重要的部分。
显然我还没有在实践中评估过它,但是它比 ASPX 引擎更简洁的事实是最引人注目的特性来诱导切换。我只希望它也能更好地自动格式化。它将得到智能感知的支持并与 MVC 一起交付,这一事实使其成为启动新项目的自然选择。在我进行转换之前,我将在一个小项目上给它一个公平的机会。仅仅通过阅读这篇文章,我没有看到我目前正在使用 ASPX 引擎做的任何事情。
更新:我已经使用 Razor 一年多了,并且永远不会回到 ASPX 引擎。语法看起来非常自然和富有表现力。
Razor 使用括号,也就是用于foreach
东西。Spark 在这里使用 XML 标签。
因此,Spark 完全支持每个 XML 处理器解析和分析视图文件。
Mabye 这不是什么大事,但显示了一致性和可扩展性。
除了更简洁的外观,布局部分的灵活性看起来非常好,声明性 HTML 帮助器看起来非常有用。到目前为止,使用它没有看到任何缺点,但当然必须在实践中尝试一下。