Pergunta

Percebo que Scott Guthrie está começando a mencionar Razor uma Bak Bit No blog dele, mas não tenho tanta certeza de que é uma boa opção para o meu estilo.

É verdade que é um estilo bastante desconhecido para alguém que está acostumado a um tipo "padrão" de marcação do ASP.NET (titulares de locais de conteúdo e código embutido), mas parece muitas páginas adicionais para gerenciar e uma marcação menos clara para mim.

Quais são os sentimentos de outras pessoas sobre isso? É algo que você acredita que deve ser seriamente considerado ao andaimes novas páginas do MVC ou está apenas tentando resolver um problema que não existe?

Foi útil?

Solução

Isenção de isenção: Eu sou um dos desenvolvedores da Microsoft no MVC e Razor, então posso ser um pouco tendencioso :)

Projetamos Razor para ser uma linguagem de modelagem concisa que usa apenas a quantidade mínima necessária de caracteres de controle. Eu diria que grandes partes de suas opiniões podem ser expressas com menos caracteres do que o mesmo código usando a sintaxe "tradicional" da Web.

Por exemplo, o snippet de código a seguir na sintaxe ASPX:

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

Pode ser expresso o seguinte em Razor:

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

Enquanto a versão ASPX tem 21 caracteres de transição (o <% e %>), a versão Razor tem apenas três (@)

Eu diria que as vantagens do Razor são as seguintes:

  1. Sintaxe Concise, que é muito semelhante à maneira como você escreve código C# regular (confira a seguinte postagem recente do blog de Phil Haack comparando ASXP com a Sintaxe Razor: http://haacked.com/archive/2011/01/06/razor-syntax-quick-reference.aspx)
  2. A codificação automática HTML da saída (que ajuda a protegê -lo dos ataques de injeção de HTML)
  3. Incorporado (embora não 100%) validação da sua marcação, o que ajuda a evitar tags desequilibradas

Os conceitos relacionados à página também mapeiam facilmente do que você tem no ASPX

  • Como você pode ver o código embutido ainda é permitido
  • As seções (que podem ser opcionais) são equivalentes a espaços reservados para conteúdo
  • Páginas de layout em vez de páginas mestre
  • Os conceitos de visões completas e parciais são iguais
  • @functions { ... } blocos em vez de <script runat="server"> ... </script>

Além disso, Razor tem vários conceitos úteis que eu diria que são melhores do que o que está disponível no ASPX:

  • @helper Funções para a criação realmente fácil de funções que emitem marcação
  • @model palavra -chave para especificar o tipo de modelo da sua visão sem ter que escrever um <%@ Page ... Diretiva com o nome completo da classe

Gostaria de pensar que abordamos um problema real, que é permitir que você escreva mais facilmente visões concisas e compatíveis com padrões, ao mesmo tempo em que fornece maneiras de refatorar o código comum.

Obviamente, nem todos preferem a sintaxe, e é por isso que também estamos apoiando totalmente o mecanismo ASPX View. Além disso, você pode conferir o Spark e o NHAML, que são dois motores de visão de terceiros que desfrutam de seguidores significativos da comunidade. A postagem do blog a seguir tem uma boa comparação das diferentes ofertas: http://blogs.msdn.com/b/coding4fun/archive/2010/10/04/10070953.aspx

Outras dicas

Pessoalmente, eu realmente aprecio a redução de quantos personagens de fuga são usados. Usando <% %> fica muito tedioso quando comparado a @{} e não é tão sintaticamente atraente.

Além disso, escrever uma definição inteira para o CodeBehind e Page é simplificada para um único @model model.

Como também observado por Marcind, não ter que incluir sempre runat=server é muito bom também.

No geral, eu realmente aprecio usar o motor de barbear e acho que ele não apenas facilita o desenvolvimento das coisas, mas também facilita a leitura do código.

Podes tentar este conversor. Para mais informações da verificação de informações esta postagem do blog.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top