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