在阅读完Scott Guthrie的博客关于ASP.NET MVC的新Razor 视图引擎和这个问题比较可用的视图引擎之后。
Razor似乎解决了默认视图引擎的大部分问题。哪些特性差异会让你作为开发者选择Razor?哪些特性的缺失会使你不使用它呢?
在阅读完Scott Guthrie的博客关于ASP.NET MVC的新Razor 视图引擎和这个问题比较可用的视图引擎之后。
Razor似乎解决了默认视图引擎的大部分问题。哪些特性差异会让你作为开发者选择Razor?哪些特性的缺失会使你不使用它呢?
可进行单元测试:新的视图引擎实现将支持对视图进行单元测试(无需控制器或 Web 服务器,可以在任何单元测试项目中进行托管 - 不需要特殊的应用程序域)。
终于!!!真不敢相信 Microsoft 花了近8年时间才推出支持此功能的视图引擎。
视图引擎除了标记语言之外还有很多内容。以下是我会想念的一些 Spark 特性:
我更喜欢 Spark 的循环/条件语句语法——混合 HTML <> 和 C# {} 大括号看起来不太好看——但这纯粹是个人观点。
Razor 中也有非常有前途的特性,例如内联模板。考虑到 Spark 的创建者被微软聘用,我认为有希望 Razor 成为编写良好、非常有用和得到很好支持的视图引擎。当然,我不会用 Razor 重新编写我的数百个 Spark 视图(尽管我用 Spark 重写了几十个 WebForms 视图)。但我肯定会认真看看 Razor——我只是从你的问题中发现了这一点,谢谢——我现在看到的东西看起来很有前途。当然,它与 WebForms 不竞争(任何视图引擎都比 WebForms 好),但如果您还没有过多投资于其他视图引擎,则它似乎是一个新 ASP.NET MVC 项目的不错选择。
对我而言,有三个引人注目的原因:
编译 - Razor视图可以编译为DLL。在.NET Web项目中,我们最终获得了适当的可重用性。我可以拥有一个业务对象,它知道如何显示自己,而不必将该代码作为.ascx文件漂浮在Web项目的某个部分。
可测试性 - 由于Razor视图被编译为类,因此我可以编写单元测试并将模拟的对象实例传递给它,以查看HTML是否正确。
智能感知和简洁语法很好,但不是最重要的部分。
1)这些可以预编译或作为资源嵌入到程序集中吗?是的-这是我们计划中的一项未在帖子中提及的功能。我们计划让你能够将它们添加到类库项目并将其编译为程序集。 ... ScottGu” - Quango
!{Html.EditTemplateFor(x => x.Quantity)}
,因此我只需要知道一些关键帮助方法和视图模型上的属性即可。我认为缺乏智能感知实际上帮助我保持了简单性。 - RyanRazor使用括号,即对于foreach
等内容。
Spark在这里使用XML标签。
因此,Spark完全支持通过XML处理器解析和分析视图文件。
也许这不是一个大问题,但显示了一致性和可扩展性。