Предоставляет ли синтаксис Razor неоспоримое преимущество в разметке пользовательского интерфейса?
Я заметил, что Скотт Гатри начинает упоминание бритвы a справедливый бит в своем блоге, но я просто не уверен, что это хорошо подходит для моего стиля.
конечно, это довольно незнакомый стиль для тех, кто довольно привык к "стандартному" виду ASP.Net разметка (держатели контента и встроенный код), но это просто похоже на множество дополнительных страниц для управления и менее четкой разметки для меня.
каковы чувства других людей на нем? Это что-то, что вы считаете, должно быть серьезно рассмотрено при создании новых страниц MVC или это просто попытка решить проблему, которой не существует?
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 символ перехода (
<%и%>), версия бритвы имеет только три (@)Я бы сказал, что преимущества бритвы следующим образом:
- Краткий синтаксис, который очень похож на то, как вы пишете обычный код C# (ознакомьтесь со следующим недавним сообщением в блоге Фила Хаака, сравнивая Asxp с синтаксисом Razor: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx)
- автоматическое HTML-кодирование вывода (что помогает защитить вас от атак HTML-инъекций)
- встроенная (хотя и не 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