为什么Razor视图引擎被认为比ASPX更轻?

时间:2014-04-22 13:49:02

标签: asp.net-mvc asp.net-mvc-4 razorengine

众所周知,.Net中的MVC支持两个视图引擎,即ASPX和Razor。我已阅读了几篇文章,并观察到Razor被一致(几乎)视为两者之间更好的选择。原因是:

  • 剃刀很干净 - 同意。语法本身使它更清晰。
  • Razor语法很简单 - 同意。无需关闭标签。
  • 剃刀重量轻 - 我无法理解为什么它被认为是轻量级的?

编辑1

其他差异:   - 可以在ASPX引擎中查看设计,但无法在Razor引擎中查看。

另外,除了这些差异之外,是否有任何其他差异使Razor和ASPX有显着差异?

如果我遗漏了其他任何基本的差异/点,请指出,因为我在阅读了几篇文章之后只能总结上述内容。

2 个答案:

答案 0 :(得分:2)

我认为“轻量级”可能是对剃刀引擎输出的引用:考虑传统aspx表单应用程序的输出,服务器不仅提供标记而且提供视图状态的页面,控件ID是批量的通过有效的路径描述它们如何嵌套在页面上,然后有所有的javascript使这个和回发工作之类的东西。此外,对页面的更新更有可能涉及到服务器的往返(他们不需要,但通常他们这样做)。在回发时,服务器还可以执行序列化和反序列化的工作,不仅是视图状态,还可以在对代码进行编码之前实例化页面上的所有控件。有一些优点你可以做,但基本上你最终会得到一些看起来有点像这样的东西,所有这些都可以被描述为对客户端来说很重的负载,服务于页面的服务器上的繁重工作负载以及服务页面。

相比之下,剃刀构建形式的输出可以比标记更多 - 简单的HTML控制键值等的一些隐藏字段和一两个按钮。您可以添加CSS和jquery以及动态dom操作,但它们对于创建页面不是必需的:提交按钮,带有操作的表单和方法会将表单数据返回到服务器,并且所有服务器都获取了基本编码表单字段。服务器将根据表单字段实例化预期的实体类型(它不需要),但这是在对发布的数据进行编码之前必须做的全部。

通过这种方式,剃刀模型可以被认为比传统的aspx方式更轻。即使是复杂的页面也倾向于通过javascript / CSS / jquery库和ajax通信将处理推送到客户端。

答案 1 :(得分:-3)

Razor视图的主要优点是:

1)使用以代码为中心的模板方法优化HTML生成语法,在HTML和代码之间进行最小的转换

2)支持布局(替代aspx中的母版页)

3)单元可测试(大型项目中最重要)

4)支持智能感知。

5)Razor View引擎通过在渲染到视图之前对脚本或HTML标记进行编码来防止跨站点脚本(XSS)攻击

6)Razor的语法非常紧凑,可以帮助我们减少输入。