Empecé a aprender AngularJS y ASP.NET MVC, pero no estoy seguro de por qué usarlos juntos en el mismo proyecto.
¿No son ambos marcos MVC? ¿Debo usarlos en la misma aplicación? ¿No es uno u otro?
fuente
Empecé a aprender AngularJS y ASP.NET MVC, pero no estoy seguro de por qué usarlos juntos en el mismo proyecto.
¿No son ambos marcos MVC? ¿Debo usarlos en la misma aplicación? ¿No es uno u otro?
Si está creando una aplicación de página única (SPA) , entonces probablemente no necesite el "MVC" en ASP.NET MVC . Es probable que las vistas, especialmente las vistas dinámicas, se entreguen / manipulen del lado del cliente. Manijas angulares que bien.
Pero quizás no quieras un SPA 100%. ¿Y que? Imagine en cambio 10 páginas, pero 10 páginas que son muydinámica. Después de que un usuario inicia sesión, hay una pequeña insignia de usuario en la esquina derecha. Eso no es dinámico. Solo muestra algunas cosas ingeniosas como la "puntuación" del usuario y su última selfie. Guarda en caché las cosas ingeniosas para que puedan recuperarse fácilmente. Ahora, puedes ir de dos maneras con esto. Si eres un purista de MVC del lado del cliente, solo obtienes los datos de la insignia después de que se entregue la carga útil HTML inicial, al igual que todos los demás datos. Pero tal vez no eres un purista. Quizás eres lo opuesto a un purista. Tal vez eres un impurista. Entonces, en lugar de entregar el HTML inicial, entregar algo de JavaScript que se publicará de nuevo en su servidor, se publicará a través de JavaScript para obtener datos de la insignia y, finalmente, fusionará esos datos en una vista a través del MVC del lado del cliente,eso como tu HTML inicial. Después de que se entregue su HTML inicial, continúe con sus payasadas MVC típicas del lado del cliente.
Entonces ... MVC en el servidor y en el cliente es solo una forma conveniente de organizar el código que solía ser un desastre en 2001. No tiene que elegir uno u otro. Puedes elegir ambos. Por supuesto, cuanto más hagas después de que se entregue ese HTML inicial, menos necesitarás MVC del lado del servidor. Aún así, está ahí para ti si lo necesitas. Por ejemplo, trabajé en una aplicación ASP.NET MVC / Angular donde las plantillas angulares externas en realidad podrían ser .NET MVC ActionResult. Eso significa que su controlador de servidor podría fusionar datos en su vista, entregarlos a Angular como plantilla, y el controlador de Angular podría fusionar sus datos en la vista. No digo que sea una buena idea, pero solo muestra que una forma de MVC no deja obsoleta a la otra.
Además, no importa cómo implemente Angular, necesitará una forma de entregar ese HTML inicial, las plantillas y, lo más importante, los datos. ¿Por qué no usar una plataforma que lo hace fácil? Hay muchos, pero .NET MVC no se queda atrás. Como dije, puede hacer que el HTML inicial y las plantillas angulares externas sean el resultado de una acción MVC, pero mejor aún, puede usar la API web de .NET para entregar los datos. La API web es tan deliciosa como la compota de albaricoque.
Resumido: MVC es solo un patrón. Es posible que desee utilizar ese patrón en cualquier número de capas físicas. No se puede agotar. Úselo libremente si tiene sentido. Además, Angular puede no ser MVC de todos modos (eso dicen las personas que se preocupan por estas cosas), así que siéntase libre de usarlo con una herramienta que tenga "MVC" en el nombre. Demonios, incluso si es MVC, mezcla y combina como desees.
ASP.NET MVC es un marco del lado del servidor; no le importa qué bibliotecas de JavaScript utilizas. AngularJS es una biblioteca del lado del cliente, a la que no le importa qué tecnología del lado del servidor impulse el sitio web: puede ser Python, ASP.NET MVC o incluso el viejo montón de archivos HTML estáticos almacenados directamente en el disco.
ASP.NET MVC y AngularJS son compatibles, y hay muchos proyectos que los usan juntos.
¿ Necesitas usar ambos? Realmente no. Depende completamente de las necesidades de su proyecto.
Si su sitio web es dinámico, debe usar algunas secuencias de comandos del lado del servidor. Podría usar ASP.NET, y el hecho de que esté usando AngularJS no hará que su código del lado del servidor sea más MVC. Si desea poder estructurar su aplicación del lado del servidor como MVC, preferirá elegir ASP.NET MVC.
Del mismo modo, el hecho de que esté utilizando ASP.NET MVC no implica nada sobre la estructura de su código del lado del cliente. Puede poner todo su JavaScript en un solo archivo sin pensar en la estructura y estar contento con eso (hasta que el proyecto comience a crecer). Una vez más, AngularJS se presenta como una forma de estructurar su aplicación en el lado del cliente.
Nota al margen: etiquetó su pregunta ASP.NET MVC 3. A menos que sea un proyecto heredado que deba mantener o tenga restricciones específicas cuando aloje la aplicación en servidores heredados que no se actualizaron durante los últimos cuatro años, puede usar ASP .NET MVC 4 o 5 en su lugar.
fuente
Si está utilizando Visual Studio, hay una nueva plantilla de sitio web MVC de 'aplicación de una sola página' que incluye controladores angulares y MVC Web Api.
Esto funciona bien porque su código del lado del servidor MVC proporciona puntos finales json para que llame el código del lado angular del cliente.
Además, puede usar los controladores MVC para servir la vista o vistas html básicas para su aplicación de página única. esto le da el poder de la generación del lado del servidor, autorización, redireccionamientos, manejo de errores, etc.
A menudo, querrá una pequeña cantidad de html / javascript generado por el servidor, incluso en una aplicación de una sola página, cosas como URL de punto final para diferentes entornos, diferentes idiomas o incluso la página de autenticación extraña que puede ser más fácil de hacer en el lado del servidor.
fuente
3 años después, use la API web ASP.NET para entregar sus datos y Angular (js o más reciente) para estructurar su aplicación en el lado del cliente. Si está creando un sitio estático, simplemente use ASP.NET MVC.
fuente