Предоставляет ли синтаксис Razor неоспоримое преимущество в разметке пользовательского интерфейса?



Я заметил, что Скотт Гатри начинает упоминание бритвы a справедливый бит в своем блоге, но я просто не уверен, что это хорошо подходит для моего стиля.



конечно, это довольно незнакомый стиль для тех, кто довольно привык к "стандартному" виду ASP.Net разметка (держатели контента и встроенный код), но это просто похоже на множество дополнительных страниц для управления и менее четкой разметки для меня.



каковы чувства других людей на нем? Это что-то, что вы считаете, должно быть серьезно рассмотрено при создании новых страниц MVC или это просто попытка решить проблему, которой не существует?

564   3  

3 ответов:

[отказ от ответственности: я один из разработчиков Microsoft на MVC и Razor, поэтому я могу быть немного предвзятым :)]

мы разработали Razor, чтобы быть кратким языком шаблонов, который использует только минимальное необходимое количество управляющих символов. Я бы сказал, что большая часть ваших представлений может быть выражена с меньшим количеством символов, чем тот же код, используя "традиционный" синтаксис веб-форм.

например, следующий фрагмент кода в синтаксисе ASPX:

<% if(someCondition) { %>
  <ol>
  <% foreach(var item in Model) { %>
     <li><%: item.ToString() %></li>
  <% } %>
  </ol>
<% } %>

может выражаться в Razor следующим образом:

@if(someCondition) {
   <ol>
   @foreach(var item in Model) {
      <li>@item.ToString()</li>
   }
   </ol>
}

в то время как версия ASPX имеет 21 символ перехода (<% и %>), версия бритвы имеет только три (@)

Я бы сказал, что преимущества бритвы следующим образом:

  1. Краткий синтаксис, который очень похож на то, как вы пишете обычный код C# (ознакомьтесь со следующим недавним сообщением в блоге Фила Хаака, сравнивая Asxp с синтаксисом Razor: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx)
  2. автоматическое HTML-кодирование вывода (что помогает защитить вас от атак HTML-инъекций)
  3. встроенная (хотя и не 100%) проверка вашей разметки, которая поможет вам избежать несбалансированных тегов

связанные со страницей концепции также легко сопоставляются с тем, что у вас есть в ASPX

  • как вы можете видеть встроенный код по-прежнему разрешено
  • разделы (которые могут быть необязательными) эквивалентны заполнителям содержимого
  • страницы макета вместо главных страниц
  • понятия полного и частичного взгляды совпадают
  • @functions { ... } вместо <script runat="server"> ... </script>

кроме того, Razor имеет ряд полезных концепций, которые я бы сказал, лучше, чем то, что доступно в ASPX:

  • @helper функции для очень удобного создания функции, которые выдают разметку
  • @model ключевое слово для указания типа модели вашего представления без необходимости писать <%@ Page ... директива с полным именем класса

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

конечно, не все предпочтут синтаксис, поэтому мы также полностью поддерживает ASPX view engine. Кроме того, вы можете проверить Spark и NHaml, которые являются двумя сторонними движками просмотра, которые пользуются значительным сообществом. Следующее сообщение в блоге имеет хорошее сравнение различных предложений:http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx

лично я очень ценю сокращение количества используемых escape-символов. Используя <% %> становится очень утомительным по сравнению с @{} и не так синтаксически привлекательным.

кроме того, написание целого определения для codebehind и страницы упрощается до одного @model model.

Как также отметил марцинд, не обязательно всегда включать runat=server очень приятно также.

в целом, я очень ценю использование двигателя бритвы и найти его не только облегчает мне разработку, но и облегчает чтение кода.

вы можете попробовать этот конвертер. Для получения дополнительной информации посетите этот блог.

Comments

    Ничего не найдено.