1
resposta

Vantagem?

Qual a vantagem de criar um site usando MVC com Razor ao invés de HTML/CSS/JS? Isso no contexto da parte V do MVC.

Não é muito trabalho codificar em C# no Layout, prejudica a visualização e estilização?

1 resposta

Olá, Tony!

O Razor é um "view engine" (assim como o ASPX Engine) e é um excelente mecanismo de renderização server side.

Uma das vantagens do Razor é permitir codificar no mesmo arquivo (.cshtml) tanto o HTML estático quanto o código dinâmico que será gerado pelo servidor. Você pode definir seções e assim visualizar melhor a estrutura do HTML que será gerado.

<!DOCTYPE html>
<html>
  <head>
    <title>Multisection Content</title>
    <link href="~/Styles/Site.css" rel="stylesheet" type="text/css" />
  </head>
  <body>
    <div id="header">
      @RenderSection("header")
    </div>
    <div id="list">
      @RenderSection("list")
    </div>
    <div id="main">
      @RenderBody()
    </div>
    <div id="footer">
      &copy; 2012 Contoso Pharmaceuticals. All rights reserved.
    </div>
  </body>
</html>

Como a estrutura e a hierarquia dos elementos da página ficam mais visíveis, fica mais fácil definir os estilos em CSS.

Um website é feito de várias "peças". O Razor sabe como montá-las rapidamente e transformá-las numa página HTML. O Razor sabe como visualizar os cookies, gerar tokens de autenticação (vitais para segurança na web), sabe quem é o usuário que está logado, qual a cultura (idioma, país, etc.) do usuário que está requisitando a página (para gerar a página no idioma adequado), entre outras coisas.

Você até poderia tentar utilizar o JavaScript para implementar essa mesma renderização no cliente, só que você obrigaria o seu cliente a baixar TODAS essas "peças", e isso exige mais poder processamento do browser do cliente, consumo de dados e tempo de processamento, pois o JavaScript roda localmente no navegador.

Normalmente, um website é feito não só com renderização no servidor (com Asp.Net, Razor, PHP, Node.Js, etc), mas também com bibliotecas JavaScript que dão suporte a Ajax e otimizam a interface no navegador (jQuery, Angular, React, Ember, etc). No final das contas, um bom website depende de rapidez, segurança, boa experiência do usuário, e bom senso dos desenvolvedores e designers.

Enfim, é um assunto pra muitas horas, espero ter ajudado!

Bons estudos!