Desde meu primeiro contato com desenvolvimento web, sempre utilizei tecnologias Microsoft. Lá em 2001 comecei a mexer com ASP3 e em 2004 comecei a trabalhar profissionalmente, já com ASP.NET. Desde o ASP3, as coisas não mudaram muito no que se refere ao HTML, a tecnologia avançou e mudou muito do lado do servidor, mas HTML sempre foi tratado da mesma forma.
Com a popularização dos frameworks MVC, uma nova abordagem veio em relação ao HTML, já que cada parte do MVC (Model, View, Controller) pode funcionar e agir da forma que for concebido no framework.
Um padrão que apareceu em relação a View, é que o HTML dela é gerado por meio de View Engines. Ou seja, você não usa mais HTML e sim uma estrutura que gera HTML.
Isso pode as vezes não estar claro na mente do desenvolvedor. Afinal, ao olhar uma View do ASP.NET MVC, o que está ali é basicamente HTML, salvo algumas marcações de código da Model, como era no ASP3.
Primeiramente é esse tipo de visão que precisa ser removido de sua cabeça. Aquilo não é HTML, é uma View Engine, mesmo que muitas delas utilizem HTML junto. A View Engine padrão utilizada pelo ASP.NET MVC é a WebForms (NÃO confundir com o ASP.NET Web Forms), que é basicamente a mesma do ASP3, porém com algumas coisas novas.
O que ajudará a entender como uma View Engine funciona é compará-las.
No caso do ASP.NET MVC, 4 View Engines se tornaram mais populares, ou por serem padrão e bem conhecidas, ou por mostrarem bons recursos de utilização. São elas:
WebForms - é a View Engine padrão do ASP.NET MVC e também a mais antiga. Existe desde 1996 quando veio com o ASP3 e desde lá não mudou muita coisa. Vejamos um exemplo do uso do WebForms:

Créditos: Channel 9
Podemos perceber que a principal característica do WebForms é a delimitação do trecho de código com <% e %>, o que é uma vantagem, já que fica bem visível onde começa e acaba HTML e código. Porém, dependendo da complexidade da vier, temos muita coisa escrita na página, muitos <% e %> abrindo e fechando sessões de código o tempo todo.
NHaml - O Haml é um padrão fortemente adotado no Framework Rails, que foi portado pra ASP.NET MVC na forma do NHaml.
A abordagem dele é bem interessante, já que nele você NÃO USA HTML. Ele é composto de marcações próprias que no final gerarão o código HTML. Vejamos o exemplo anterior agora em NHaml:

Créditos: Channel 9
Uma desvantagem do NHaml é que o projeto, apesar de open-source, não é muito ativo, tanto que ainda não temos NHaml compatível com o ASP.NET MVC 3. Algumas outras coisas dele não são tão “elegantes”, se o compararmos com as outras View Engines. Porém, se a idéia de não usar HTML e testar algo novo (desde que você não use MVC3) for interessante. Não perca tempo e experimente!
Spark - Essa é uma View Engine muito interessante e basicamente é o inverso do Nhaml. Enquanto no NHaml você não tem nenhum HTML, no Spark você trabalha dentro do HTML. As marcações do Spark são feitas dentro das tags HTML:

Créditos: Channel 9
Outra vantagem é que o projeto Spark é bem ativo e sempre o estão atualizando. Ele também já é compatível com ASP.NET MVC 3.
Além disso, o Spark fornece recursos próprio que ajudam na geração de código nas Views. Por meio de configurações você consegue criar tas próprias que irão gerar trechos específicos de HTML. É algo semelhante aos Helpers do MVC, porém você o escreve como se fosse uma tag HTML.
Se você tem vontade de testar algo novo e fora do universo Microsoft (Spark também é open-source), eu recomendo o Spark.
Razor - Deixado por último, porém não menos importante, o Razor é a View Engine mais nova de todas (2011) e vem junto com o ASP.NET MVC 3. Ou seja, ao criar uma View, você terá como opções de View Engine o WebForms e o Razor. Mas qual a idéia por trás do Razor?
Basicamente, a Microsoft resolveu atualizar o que vinha igual desde 1996, porém sem substituir o já tão conhecido WebForms. Você tem ele lá, porém tem uma outra View Engine mais fluida e prática pra experimentar, e essa, eu recomendo fortemente!
Fluidez, esse é o adjetivo que vem a mente ao ver uma View utilizando Razor. Reparem:

Créditos: Channel 9
Diferente do WebForms (que separa bem código e HTML), do NHaml (que não possui HTML) e do Spark (que coloca o código dentro das tas HTML), o Razor é fluido, o html e o código “conversam” de forma simples e direta. Isso pode ser visto de forma negativa, já que em uma View mais complexa, fica um tanto estranho perceber onde começa e acabam instruções e HTML. Porém, com o tempo isso deixa de ser um empecilho e no final passa a ser mais interessante desenvolver assim. Mas é questão de gosto, e de experimentar uma abordagem nova também.
Acho estranho alguns desenvolveres criticarem o Razor, pois quando chegou o ASP.NET MVC, a primeira crítica foi de ele usar WebForms nas Views.
Acho que o interessante, ao invés de pensar que as View Engines estão aí pra competir, deve-se pensar que elas estão aí pra te dar novas opções de desenvolver suas Views em MVC, ainda mais agora que esse padrão está virando uma realidade também dentro do mundo Microsoft.
Por enquanto é isso. Experimentem e digam aí nos comentários quais você mais gostou. Quem já usou View Engines em outras tecnologias (PHP, Rails, Django) também está convidado a participar! Até o próximo post e bom desenvolvimento!