【问题标题】:What is view engine? What does it actually do?什么是视图引擎?它实际上是做什么的?
【发布时间】:2012-01-08 15:48:01
【问题描述】:

我开始学习 ASP.NET MVC3。

因此,在阅读在线教程和书籍时,我经常遇到这个术语“视图引擎”。我不知道那是什么。

它实际上是做什么的?

为什么这对我来说很重要?

【问题讨论】:

    标签: c# asp.net asp.net-mvc viewengine


    【解决方案1】:

    视图引擎负责从您的视图创建 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。

    【讨论】:

    • 你能告诉我(给我一个链接)如何离线渲染 ViewEngines 吗?
    • @gillyb:最好的选择是razorengine.codeplex.com,它在 ASP 上下文之外呈现 Razor 视图。
    【解决方案2】:

    视图引擎负责渲染您的视图,并将您的代码转换为精美的 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>
    }
    

    【讨论】:

      【解决方案3】:

      视图引擎是 MVC 用来查找和呈现您从控制器请求的视图的工具。如果您对默认路由感到满意,您可能不需要更改任何内容,但假设您希望将共享文件通常位于 root/views/shared 中,而不是位于 root/common 中,您将使用自定义视图引擎需要创建才能做到这一点。

      您可以在此处了解如何构建视图引擎:

      http://coderjournal.com/2009/05/creating-your-first-mvc-viewengine/

      视图引擎还负责渲染视图,但由于您刚刚学习 MVC,您可能还不需要更改渲染功能

      【解决方案4】:

      在 MVC 中,视图引擎是在视图和浏览器之间工作的引擎,通过编译视图中的代码,向浏览器提供有效的 HTML 输出。有许多可用的视图引擎,其中一些如下:

      1. ASPX

      2. 剃须刀

      3. 火花

      4. NHaml

      5. NDJango

      6. 哈希

      7. 盲文

      8. 贝尔维尤

      9. 锋利的瓷砖

      10. 字符串模板

      11. 翼拍

      12. SharpDOM

      目前大多数开发人员更喜欢使用 Razor 视图引擎,因为它提供了非常方便的编程方式。所有这些视图引擎可能都不支持 ASP.NET MVC。

      更多详情您可以访问this article

      【解决方案5】:

      模板/视图引擎使您能够在应用程序中使用静态模板文件。在运行时,模板引擎将模板文件中的变量替换为实际值,并将模板转换为发送给客户端的 HTML 文件。这种方法可以更轻松地设计 HTML 页面。

      【讨论】:

        【解决方案6】:

        视图引擎在应用程序内部工作,用于将 HTML 页面呈现给浏览器或用户。它可以包含 HTML 标签、服务器控件和一些编程语言。

        Razor 是 MVC4 框架的首选视图引擎。

        【讨论】:

          【解决方案7】:

          在 ASP.Net MVC 中,视图引擎是在视图和浏览器之间工作的引擎,通过考虑视图提供的输出向浏览器提供有效的 HTML 输出。视图引擎有多种类型。

          1)ASPX

          2)剃须刀

          3)火花

          4)NHaml

          5)NDJango

          6)简单

          7)盲文

          【讨论】:

            【解决方案8】:

            我在http://questionbox.in/view-engine-asp-net-mvc-razor-view-engine-asp-net-mvc-web-form-aspx-view-engine-asp-net-mvc/阅读了一篇描述性帖子

            视图引擎能够将 HTML 从您的视图呈现到浏览器。

            ASP.NET MVC 支持许多视图引擎,但使用最广泛的视图引擎是

            • Web 表单/ASPX 视图引擎。
            • Razor 视图引擎。

            Web 表单视图引擎/ASPX 视图引擎:

            • Web 表单视图引擎/ASPX 视图引擎是默认视图引擎 对于 Asp.net MVC 项目。它可从 MVC 1.0 获得
            • Web 表单引擎的命名空间是 Web.Mvc.WebFormViewEngine
            • 此视图引擎的文件扩展名类似于 Web 表单:

            .aspx,用于类似于 Web 表单页面的视图。 .ascx,用于部分视图和编辑器模板,就像用户控件一样。 .master,用于布局和母版页,就像 Web 表单中的母版页一样。

            • 不支持 TDD(测试驱动开发)。
            • Web 表单引擎不阻止 XSS 攻击意味着保存任何脚本 在渲染页面时将触发数据库中的数据
            • 语法:

            Razor 视图引擎:

            • Razor 视图引擎是一种高级视图引擎,可用于 MVC 3.0 及更高版本
            • ASPX 视图引擎的命名空间是 Web.Razor。
            • 此视图引擎的文件扩展名为 .cshtml (Razor C#),对于视图, 部分视图、编辑器模板和布局页面。 .vbhtml(剃刀 VB.NET),用于视图、部分视图、编辑器模板和布局页面。
            • 支持 TDD(测试驱动开发)。
            • 与 Web 表单引擎相比,Razor 引擎有点慢。
            • Razor Engine 防止 XSS 攻击(Cross-Site Scripting Attacks)手段 它在渲染到视图之前对脚本或 html 标签(如 )进行编码。
            • Razor 语法比 Web 表单更容易理解和简洁 句法。 Razor 使用@符号使代码如下:

              @Html.ActionLink(“首页”, “索引”)

            【讨论】:

              【解决方案9】:

              视图引擎将视图呈现为 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。

              【讨论】:

                【解决方案10】:

                到目前为止,每个响应都与 ASP.NET 相关。如果您正在寻找 nodejs 的视图引擎,那么以下一些是选项:

                Jade (Pug)
                express-handlebars
                ejs
                React
                

                我在https://github.com/expressjs/express/wiki#template-engines 找到了它们的完整列表,但上面的那些似乎是我听到最多的。

                【讨论】:

                  【解决方案11】:

                  两个视图引擎:

                  ASPX

                  ASPX 视图引擎,服务器端脚本被包裹在 [% %] 之间 .ASPX 是它的扩展名。

                  剃须刀

                  剃须刀我们使用@。 可以在 HTML 和代码之间切换。 Razor 视图扩展 .CSHTML 和 .VBHTML

                  【讨论】:

                  • Sri,感谢您抽出宝贵时间提供答案。 StackOverflow 有一个 helpful guide 来发布详尽而简洁的答案。您可以参考该答案以及此处发布的其他一些答案,以了解使答案脱颖而出的原因。
                  猜你喜欢
                  • 2011-09-04
                  • 1970-01-01
                  • 1970-01-01
                  • 2019-10-27
                  • 1970-01-01
                  • 2011-03-11
                  • 2010-11-26
                  • 2015-06-23
                  • 2017-12-26
                  相关资源
                  最近更新 更多