Zauważyłem, Scott Guthrie zaczyna wspominać Razor się trochę godziwej na swoim blogu, ale jestem pewien, że nie tylko, że jest to dobre dopasowanie do mojego stylu.
To prawda, że jest to dość nieznany styl dla kogoś, kto jest przyzwyczajony do „standardowego” rodzaju znaczników ASP.Net (posiadaczy miejsca na zawartość i kodu wbudowanego), ale wydaje mi się, że jest to wiele dodatkowych stron do zarządzania i mniej czytelne znaczniki.
Jakie są odczucia innych ludzi? Czy uważasz, że jest to coś, co powinno być poważnie brane pod uwagę podczas tworzenia szkieletów nowych stron MVC, czy po prostu próbuje rozwiązać problem, który nie istnieje?
asp.net-mvc
syntax
markup
razor
asp.net-mvc-3
Phil Wheeler
źródło
źródło
Odpowiedzi:
[Uwaga: jestem jednym z programistów Microsoft w MVC i Razor, więc mogę być nieco stronniczy :)]
Zaprojektowaliśmy Razor jako zwięzły język szablonów, który używa tylko minimalnej niezbędnej liczby znaków sterujących. Powiedziałbym, że duże części poglądów można wyrazić za pomocą mniejszej liczby znaków niż ten sam kod przy użyciu „tradycyjnej” składni WebForms.
Na przykład następujący fragment kodu w składni ASPX:
<% if(someCondition) { %> <ol> <% foreach(var item in Model) { %> <li><%: item.ToString() %></li> <% } %> </ol> <% } %>
W Razor można to wyrazić następująco:
@if(someCondition) { <ol> @foreach(var item in Model) { <li>@item.ToString()</li> } </ol> }
Chociaż wersja ASPX ma 21 znaków przejścia (
<%
i%>
), wersja Razor ma tylko trzy (@
)Powiedziałbym, że zalety Razora są następujące:
Pojęcia związane ze stroną również łatwo odwzorowują to, co masz w ASPX
@functions { ... }
bloki zamiast<script runat="server"> ... </script>
Ponadto Razor ma wiele przydatnych koncepcji, które powiedziałbym, że są lepsze niż to, co jest dostępne w ASPX:
@helper
funkcje do naprawdę łatwego tworzenia funkcji, które emitują znaczniki@model
słowo kluczowe do określania typu modelu widoku bez konieczności pisania<%@ Page ...
dyrektywy z pełną nazwą klasyChciałbym myśleć, że poradziliśmy sobie z prawdziwym problemem, który polega na umożliwieniu ci łatwiejszego pisania zwięzłych i zgodnych ze standardami widoków, jednocześnie zapewniając sposoby refaktoryzacji wspólnego kodu.
Oczywiście nie każdemu spodoba się składnia, dlatego też w pełni wspieramy silnik widoku ASPX. Ponadto możesz sprawdzić Spark i NHaml, czyli dwa silniki widoku innych firm, które cieszą się znacznym zainteresowaniem społeczności. Poniższy post na blogu zawiera dobre porównanie różnych ofert: http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx
źródło
<a href="mailto:[email protected]">
?@@
Osobiście naprawdę doceniam zmniejszenie liczby używanych znaków ucieczki. Używanie
<% %>
staje się bardzo żmudne w porównaniu z@{}
i nie jest tak atrakcyjne pod względem składniowym.Co więcej, pisanie całej definicji za kodem i stronę jest uproszczone do jednej
@model model
.Jak również zauważył Marcind, nie zawsze trzeba je uwzględniać
runat=server
.Ogólnie rzecz biorąc, naprawdę doceniam używanie silnika Razor i uważam, że nie tylko ułatwia mi on tworzenie, ale także ułatwia czytanie kodu.
źródło