我正在尝试使用AngularJS创建我的第一个Web应用程序.我习惯使用ASP.NET MVC 4,所以我想我会在服务器端使用它,而在客户端使用Angular.但在观看视频和进行研究后,似乎将这两者混合起来是错误的.其中一个原因是路由:Angular以自己的方式路由,ASP.NET MVC也是如此.
那么,对于熟悉ASP.NET MVC的人来说,前端的Angular可以使用哪种服务器端Web技术?我正在Visual Studio 2013中创建一个新项目,这些是我的选择:
注意:我不是在争论为什么一个选择比另一个更好; 我只是希望听到可用的可能性.我可以从那里调查.
注意2:我也可以使用Angular种子模板,但我可能会这样做,但这并不能解决服务器端使用的问题.
编辑 也许在这种情况下使用ASP.NET Web API是有意义的吗?请参阅/sf/ask/17360801/.
对我而言,您似乎正在尝试制作单页应用程序.我理解你对路由的困惑,所以我将解释我们是如何做到的.
我们有一个ASP.NET MVC5项目,它也托管ASP.NET Web API 2.我们所有的MVC5路由都由单个控制器中的单个动作处理:
routes.MapRoute("CatchAll", "{*url}", new { controller = "Home", action = "Index" } );
此操作返回一个视图,此视图是使AngularJS应用程序工作所需的基本HTML.这个HTML包含所需的CSS和JavaScript文件(框架和应用程序逻辑,如控制器,指令,服务等),并在正文中包含一些基本的HTML,如页眉,页脚和ng-view元素,其中每个路径的视图你映射的地图.
现在,使用ASP.NET Web API,我们实现了AngularJS应用程序使用的REST Web服务.这些Web服务返回了AngularJS很好理解的JSON对象,您将在JavaScript应用程序中使用它们而不会产生任何摩擦.
总而言之,您将在浏览器中点击的任何链接,如/ Home/Index,/ Home/Friends,/ Account/Settings等,服务器将始终返回相同的HTML,AngularJS将读取URL并执行相应的控制器以及您在应用程序中配置的适当视图.
要了解有关单页应用程序的更多信息,请访问:http://en.wikipedia.org/wiki/Single-page_application
要了解有关使用AngularJS的单页应用程序的更多信息,请访问:http://scotch.io/tutorials/javascript/single-page-apps-with-angularjs-routing-and-templating 2
要阅读有关REST服务的更多信息,请访问:http://www.vinaysahni.com/best-practices-for-a-pragmatic-restful-api
这不是故事的结尾.我说你遇到的任何路由,服务器将始终返回相同的HTML.那么为什么要使用ASP.NET MVC5呢?这个基本的HTML可以是一个静态文件,对吧?
嗯,这个概念在搜索引擎优化方面不起作用.搜索引擎机器人没有执行JavaScript,所以他们希望他们所需要的只是你的路线(链接)上的那一次点击.此外,Facebook不执行JavaScript,但也期望HTML特定于用户试图共享的页面.
因此,我们所做的是在服务器端创建与在AngularJS上映射的路由相同的路由,并为每个操作添加过滤器.此过滤器检查是否从浏览器发出请求,它为每个操作返回相同的HTML.如果是来自Google或Bing bot或Facebook刮刀的请求,则过滤器允许执行操作,并且操作会返回该路线的相应HTML.这个HTML非常基本,结构非常好,可以被Google,Bind和Facebook理解,并且不包含任何CSS或JavaScript.