【发布时间】:2012-01-08 15:48:01
【问题描述】:
我开始学习 ASP.NET MVC3。
因此,在阅读在线教程和书籍时,我经常遇到这个术语“视图引擎”。我不知道那是什么。
它实际上是做什么的?
为什么这对我来说很重要?
【问题讨论】:
标签: c# asp.net asp.net-mvc viewengine
我开始学习 ASP.NET MVC3。
因此,在阅读在线教程和书籍时,我经常遇到这个术语“视图引擎”。我不知道那是什么。
它实际上是做什么的?
为什么这对我来说很重要?
【问题讨论】:
标签: c# asp.net asp.net-mvc viewengine
视图引擎负责从您的视图创建 HTML。视图通常是 HTML 和编程语言的某种混合。其中大部分背后的模式称为two-step view。
例如,ASP.NET 自带开箱即用的视图引擎。那就是视图有很多标签的地方,比如<% %> 和<%: %>。它使用.aspx 文件扩展名。
在 ASP.NET MVC3 中,添加了另一个开箱即用的视图引擎 Razor,它具有更吸引人的语法,例如<div>@Model.UserName</div>.
视图引擎的选择很重要,因为视图引擎的功能集完全不同。例如,有些支持渲染为 PDF 文件;有些不能在 Web 上下文之外使用(对于旧的 ASP.NET 视图引擎来说是这样),而有些可以(例如 Razor)。当您想以与构建视图相同的方式创建 HTML 电子邮件并且这些电子邮件应该从后台工作人员而不是 Web 应用程序发送时,视图的“离线”呈现会派上用场。
在 SO 上有一个很好的比较 asp.net view engines 这里。
好消息是您可以在 ASP.NET MVC 中并行使用多个视图引擎,但除非必要,否则我不建议这样做。
Razor 引擎中已经有一些非常好的扩展点。例如,您可以提供自定义视图基类,这是一个强大的概念,可以轻松地在正确的位置添加大量功能,而不必弄乱您必须处理的所有粗糙细节。
我目前会选择 Razor。
【讨论】:
视图引擎负责渲染您的视图,并将您的代码转换为精美的 HTML。因此,他们直接负责您需要如何在视图中编写代码。
基本上有两个您需要关心:ASPX 和 Razor。在我看来,Razor 更时尚且更易于使用,但代价是仅在 MVC3 中受支持。
例如,ASPX 中的代码块可能如下所示:
<% foreach(var item in Model) { %>
<tr>
<td><%: item.Name %></td>
</tr>
<% } %>
而 Razor 等效项如下所示:
@foreach(var item in Model) {
<tr>
<td>@item.Name</td>
</tr>
}
【讨论】:
视图引擎是 MVC 用来查找和呈现您从控制器请求的视图的工具。如果您对默认路由感到满意,您可能不需要更改任何内容,但假设您希望将共享文件通常位于 root/views/shared 中,而不是位于 root/common 中,您将使用自定义视图引擎需要创建才能做到这一点。
您可以在此处了解如何构建视图引擎:
http://coderjournal.com/2009/05/creating-your-first-mvc-viewengine/
视图引擎还负责渲染视图,但由于您刚刚学习 MVC,您可能还不需要更改渲染功能
在 MVC 中,视图引擎是在视图和浏览器之间工作的引擎,通过编译视图中的代码,向浏览器提供有效的 HTML 输出。有许多可用的视图引擎,其中一些如下:
ASPX
剃须刀
火花
NHaml
NDJango
哈希
盲文
贝尔维尤
锋利的瓷砖
字符串模板
翼拍
SharpDOM
目前大多数开发人员更喜欢使用 Razor 视图引擎,因为它提供了非常方便的编程方式。所有这些视图引擎可能都不支持 ASP.NET MVC。
更多详情您可以访问this article。
模板/视图引擎使您能够在应用程序中使用静态模板文件。在运行时,模板引擎将模板文件中的变量替换为实际值,并将模板转换为发送给客户端的 HTML 文件。这种方法可以更轻松地设计 HTML 页面。
【讨论】:
视图引擎在应用程序内部工作,用于将 HTML 页面呈现给浏览器或用户。它可以包含 HTML 标签、服务器控件和一些编程语言。
Razor 是 MVC4 框架的首选视图引擎。
【讨论】:
在 ASP.Net MVC 中,视图引擎是在视图和浏览器之间工作的引擎,通过考虑视图提供的输出向浏览器提供有效的 HTML 输出。视图引擎有多种类型。
1)ASPX
2)剃须刀
3)火花
4)NHaml
5)NDJango
6)简单
7)盲文
【讨论】:
视图引擎能够将 HTML 从您的视图呈现到浏览器。
ASP.NET MVC 支持许多视图引擎,但使用最广泛的视图引擎是
Web 表单视图引擎/ASPX 视图引擎:
.aspx,用于类似于 Web 表单页面的视图。 .ascx,用于部分视图和编辑器模板,就像用户控件一样。 .master,用于布局和母版页,就像 Web 表单中的母版页一样。
Razor 视图引擎:
Razor 语法比 Web 表单更容易理解和简洁 句法。 Razor 使用@符号使代码如下:
@Html.ActionLink(“首页”, “索引”)
【讨论】:
视图引擎将视图呈现为 HTML 表单给浏览器。如果我们谈论 .Net Framework 中的 MVC 应用程序,它支持以下 2 个视图引擎:
1. Razor 视图引擎 2。 Web 表单/ASPX 视图引擎
区别: 1. Razor 视图引擎使用布局,但 ASPX 视图引擎使用母版页。
2. Razor 视图引擎使用部分页面,但 ASPX 视图引擎使用 Web 用户控件。
3. Razor 视图引擎不是一种语言,它是标记语法。
4. @' 符号在 Razor Engine 中用于编写代码。 @Html.ActionLink("登录", "登录视图") “”用作终点。您可以在 ASPX Engine 中编写它们之间的代码。
5. Razor 视图引擎具有用于视图、布局和局部视图的 .cshtml(使用 C#)和 .vbhtml(使用 VB)扩展名。 ASPX 视图引擎具有与简单 Web 应用程序类似的扩展名,例如用于视图的 .aspx、用于用户控件的 .acsx 和用于母版页的 .master。
【讨论】:
到目前为止,每个响应都与 ASP.NET 相关。如果您正在寻找 nodejs 的视图引擎,那么以下一些是选项:
Jade (Pug)
express-handlebars
ejs
React
我在https://github.com/expressjs/express/wiki#template-engines 找到了它们的完整列表,但上面的那些似乎是我听到最多的。
【讨论】:
两个视图引擎:
ASPX 视图引擎,服务器端脚本被包裹在 [% %] 之间 .ASPX 是它的扩展名。
剃须刀我们使用@。 可以在 HTML 和代码之间切换。 Razor 视图扩展 .CSHTML 和 .VBHTML
【讨论】: