Что преимущества использования являются альтернативным механизмом представления ASP.NET MVC?

Я хотел бы отметить, что если у вас есть большая строка и вам нужен случайный доступ ко многим символам из нее, вы можете захотеть заплатить дополнительную стоимость памяти и преобразовать строку в массив для лучшей производительности:

// Pay up front for O(N) memory
let chars = Array(veryLargeString.characters)

for i in 0...veryLargeNumber {
    // Benefit from O(1) access
    print(chars[i])
}
11
задан Robert Harvey 25 June 2009 в 18:54
поделиться

3 ответа

Причина, по которой людям не нравится синтаксис <%%> , заключается не в том, что он содержит много синтаксической соли, а в том, что он делает код Views -centric , что может идти вразрез с концепцией MVC о том, чтобы сделать представления как можно более "тупыми". Например, цель Spark - « позволить html доминировать над потоком , а код легко вписаться». Таким образом, ощутимая выгода состоит в том, что легче следовать духу MVC.

<viewdata products="IEnumerable[[Product]]"/>
<ul if="products.Any()">
  <li each="var p in products">${p.Name}</li>
</ul>
<else>
  <p>No products available</p>
</else>

Если вышесказанное является синтаксическим сахаром, то сам ASP.NET MVC является просто синтаксическим сахаром поверх веб-форм ASP.NET.

8
ответ дан 3 December 2019 в 10:04
поделиться

С точки зрения нхамла

  • сделать виды более лаконичными

Нхамл вид (274 символа)

%h2= ViewData.CategoryName
%ul
  - foreach (var product in ViewData.Products)
    %li
      = product.ProductName 
      .editlink
        = Html.ActionLink("Edit", new { Action="Edit" ID=product.ProductID })
= Html.ActionLink("Add New Product", new { Action="New" })

aspx вид (665 символов)

<%@ Page Language="C#" MasterPageFile="~/Views/Shared/Site.Master" AutoEventWireup="true" CodeBehind="List.aspx" Inherits="MvcApplication5.Views.Products.List" Title="Products" %>
<asp:Content ContentPlaceHolderID="MainContentPlaceHolder" runat="server">
  <h2><%= ViewData.CategoryName %></h2>
  <ul>
    <% foreach (var product in ViewData.Products) { %>
      <li>
        <%= product.ProductName %> 
        <div class="editlink">
          (<%= Html.ActionLink("Edit", new { Action="Edit", ID=product.ProductID })%>)
        </div>
      </li>
    <% } %>
  </ul>
  <%= Html.ActionLink("Add New Product", new { Action="New" }) %>
</asp:Content>

Это делается с помощью серии сокращений персонажи. Полный список см. Здесь [ http://code.google.com/p/nhaml/wiki/NHamlLanguageReference]

  • частичные данные и макет

, лучше посмотреть здесь [ http: // code .google.com / p / nhaml / wiki / PartialsAndLayouts]

  • htmlencoding по умолчанию (через конфигурацию) для всего контента, чтобы избежать XSS

  • XHTML-совместимого вывода

с точки зрения искры

  • встроенный код в xml Теги и пользовательские теги кода могут использоваться для выполнения прогроматических действий. Все это позволяет Spark минимизировать переключение контекста, которое происходит как для nhaml, так и для aspx.

например, для этой spark

<viewdata products="IEnumerable[[Product]]"/>
<ul if="products.Any()">
  <li each="var p in products">${p.Name}</li>
</ul>
<else>
  <p>No products available</p>
</else>

aspx и nhaml потребуется переключение контекста в код для выполнения if ..

[ http://code.google.com/p/nhaml/wiki/NHamlLanguageReference]

[ http://sparkviewengine.com/documentation/syntax]

2
ответ дан 3 December 2019 в 10:04
поделиться

Синтаксический сахар каким образом? Чтобы вы могли изучить еще один синтаксис? Нет. Эти движки очень полезны разработчикам, переходящим с других платформ. Делает их жизнь намного проще.

0
ответ дан 3 December 2019 в 10:04
поделиться
Другие вопросы по тегам:

Похожие вопросы: