Comecei a aprender o AngularJS e o ASP.NET MVC, mas não sei por que usá-los juntos no mesmo projeto?
Eles não são os dois frameworks MVC? Devo usá-los ambos no mesmo aplicativo? Não é um ou outro?
fonte
Comecei a aprender o AngularJS e o ASP.NET MVC, mas não sei por que usá-los juntos no mesmo projeto?
Eles não são os dois frameworks MVC? Devo usá-los ambos no mesmo aplicativo? Não é um ou outro?
Se você estiver criando um aplicativo de página única (SPA) , provavelmente não precisará do "MVC" no ASP.NET MVC . As visualizações, especialmente visualizações dinâmicas, provavelmente são entregues / manipuladas no lado do cliente. Alças angulares muito bem.
Mas talvez você não queira um SPA 100%. Então o que? Imagine, em vez disso, 10 páginas, mas 10 páginas muitodinâmico. Depois que um usuário faz logon, há um pequeno crachá de usuário no canto direito. Isso não é dinâmico. Ele mostra apenas algumas coisas bacanas, como a "pontuação" do usuário e sua última selfie. Você armazena em cache as coisas bacanas para que elas possam ser facilmente recuperadas. Agora, você pode seguir dois caminhos com isso. Se você é um purista do MVC do lado do cliente, basta buscar os dados do selo após a entrega da carga útil HTML inicial, assim como todos os outros dados. Mas talvez você não seja um purista. Talvez você seja o oposto de um purista. Talvez você seja um indiferente. Portanto, em vez de entregar o HTML inicial, entregar algum JavaScript que será postado de volta no servidor, postar via JavaScript para obter dados do emblema e, em seguida, mesclar esses dados em uma visualização pelo MVC do lado do cliente,isso como seu HTML inicial. Após a entrega do seu HTML inicial, prossiga com suas palhaçadas típicas do MVC do lado do cliente.
Portanto, o MVC no servidor e no cliente é apenas uma maneira conveniente de organizar o código que costumava ser uma bagunça em 2001. Você não precisa escolher um ou outro. Você pode escolher ambos. Concedido, quanto mais você faz após a entrega do HTML inicial, menos precisa do MVC do lado do servidor. Ainda assim, está disponível para você, se precisar. Por exemplo, trabalhei em um aplicativo ASP.NET MVC / Angular em que modelos Angular externos podem realmente ser o .NET MVC ActionResult. Isso significa que o controlador do servidor pode mesclar dados em sua exibição, entregá-los à Angular como um modelo e o controlador da Angular pode mesclar seus dados na exibição. Não estou dizendo que essa é uma boa ideia, mas mostra que uma forma de MVC não torna a outra obsoleta.
Além disso, não importa como você implante o Angular, você precisará de uma maneira de fornecer esse HTML inicial, os modelos e, o mais importante, os dados. Por que não usar uma plataforma que facilite? Existem muitos, mas o .NET MVC não é negligente. Como eu disse, você pode transformar o HTML inicial e os modelos angulares externos no resultado de uma ação MVC, mas, melhor ainda, você pode usar a API da Web do .NET para entregar os dados. A API da Web é tão deliciosa quanto a compota de damasco.
Resumido: MVC é apenas um padrão. Você pode usar esse padrão em qualquer número de camadas físicas. Não pode ser usado. Use-o livremente, se fizer sentido. Além disso, o Angular pode não ser o MVC de qualquer maneira (o mesmo diz as pessoas que se preocupam com essas coisas), então fique à vontade para usá-lo com uma ferramenta que tenha "MVC" no nome. Inferno, mesmo que seja MVC, misture e combine conforme desejado.
O ASP.NET MVC é uma estrutura do lado do servidor; não importa quais bibliotecas JavaScript você usa. O AngularJS é uma biblioteca do lado do cliente, que não se importa com a tecnologia do servidor que alimenta o site - pode ser Python, ASP.NET MVC ou até mesmo o conjunto antigo de arquivos HTML estáticos armazenados diretamente no disco.
O ASP.NET MVC e o AngularJS são compatíveis e existem muitos projetos por aí que os utilizam juntos.
Você precisa usar os dois? Na verdade não. Depende inteiramente das necessidades do seu projeto.
Se o seu site for dinâmico, você precisará usar alguns scripts do lado do servidor. Você pode usar o ASP.NET e o fato de estar usando o AngularJS não tornará o código do servidor mais MVC. Se você deseja estruturar seu aplicativo do lado do servidor como MVC, escolha o ASP.NET MVC.
Da mesma forma, o fato de você estar usando o ASP.NET MVC não implica nada na estrutura do seu código do lado do cliente. Você pode colocar todo o seu JavaScript em um único arquivo sem pensar na estrutura e ficar feliz com isso (até o projeto começar a crescer). Aqui, novamente, o AngularJS se apresenta como uma maneira de estruturar seu aplicativo no lado do cliente.
Nota lateral: você marcou sua pergunta ASP.NET MVC 3. A menos que esse seja um projeto herdado que você precise manter ou tenha restrições específicas ao hospedar o aplicativo em servidores herdados que não foram atualizados nos últimos quatro anos, você pode usar o ASP .NET MVC 4 ou 5.
fonte
Se você estiver usando o visual studio, há um novo modelo de site MVC 'app de página única' que inclui controladores angulares e MVC Web Api.
Isso funciona bem porque o código do lado do servidor MVC fornece pontos de extremidade json para o código do lado do cliente angular chamar.
Além disso, você pode usar os controladores MVC para exibir as visualizações básicas em html do seu aplicativo de página única. isso lhe dá o poder da geração, autorização, redirecionamentos, tratamento de erros do lado do servidor etc.
Muitas vezes, você deseja uma pequena quantidade de html / javascript gerado pelo servidor, mesmo em um aplicativo de página única, coisas como URLs de terminal para diferentes ambientes, idiomas diferentes ou até mesmo a página de autenticação ímpar, que pode ser mais fácil de executar no servidor.
fonte
Três anos depois, use a API da Web do ASP.NET para veicular seus dados e Angular (js ou mais recente) para estruturar seu aplicativo no lado do cliente. Se você estiver criando um site estático, use o ASP.NET MVC.
fonte