据我所知,哈希符号(#)是在Angular中实现路由时的关键。 Web服务器只关注散列之前的URL部分,Angular负责其余部分。
我已经阅读了一些解释如何从URL中删除哈希的文章。但是如果我从URL中删除哈希(#):哪个路由首先工作?
好的,这是MVC。在这种情况下,我们必须编辑MVC路由,以便服务器理解URL。但我们又开始了。将Angular Routing和MVC一起使用是否有意义? MVC路由还不够吗?也许我错过了什么。我希望你能帮助我。
答案 0 :(得分:2)
将Angular Routing和MVC一起使用是否有意义?是 MVC路由还不够?
<强> TL; DR; 强>
我很少同时使用两者。我同时使用两者的唯一一次是当我需要为某些路线验证用户时。
答案很长
1。身份验证
正如您已经想到的那样,当您想要导航到另一个页面而没有到服务器的往返时,Angular路由很棒。它通常是SPA。但是,在发送HTML之前,您可能需要对用户进行身份验证,然后MVC路由将会很方便。我写了answer about it here。请注意发送HTML和向客户端发送DATA之间的区别。如果没有服务器路由,则html-pages(或模板)将完全可访问(除非您以web.config或其他方式限制访问)。有时HTML页面也可能包含一些敏感信息......
最常见的情况是,如果您有一个带有管理员部分的公共站点。但根据我的经验,您只能通过客户端路由在客户端处理此问题。它通常是敏感的数据,而不是模板。
2。服务器端日志记录
另一种情况是您希望在服务器端进行一些日志记录。例如,如果要记录每个页面请求。这通常也可以在客户端上完成......请查看Google Analytics。但即使浏览器关闭了javascript,您也可能希望记录请求。
3. SEO
使用客户端路由时有might be some SEO-issues。但这只是在我们用客户端模板渲染html时,如果我们用MVC.Net比较完全渲染的视图。不要混淆我发布与我的链接实际上同意内容......
4. WCAG
在我的国家,所有政府网站都需要关注WCAG。其中一条规则是 - 没有javascript 。或者至少该网站应该完全可以访问没有JavaScript。没有javascript客户端路由只是非常困难。 ;)
这些是您可能需要服务器端和客户端路由的一些示例。 但总而言之,在大多数情况下,客户端就足够了。