Url web应用中的PathLocationStrategy与HashLocationStrategy
使用以下各项的优缺点是什么:Url web应用中的PathLocationStrategy与HashLocationStrategy,url,web-applications,angular,hashbang,angular2-routing,Url,Web Applications,Angular,Hashbang,Angular2 Routing,使用以下各项的优缺点是什么: PathLocationStrategy-默认的“HTML5PushState”样式 HashLocationStrategy——“hashURL”样式 例如,使用HashLocationStrategy将阻止通过元素的#ID滚动到元素的功能,但某些第三方插件需要HashLocationStrategy或Hashbang#以便在ajax网站中工作 我想知道哪个Web应用程序提供了更多功能。对我来说,主要区别在于路径定位策略需要在服务器端对@RouteConfig中配
我想知道哪个Web应用程序提供了更多功能。对我来说,主要区别在于
路径定位策略
需要在服务器端对@RouteConfig
中配置的所有路径进行配置,以重定向到Angular2应用程序的主HTML页面。否则,当您尝试在浏览器中重新加载应用程序或尝试使用特定URL访问应用程序时,将出现一些404错误
这里有一个问题可以给你一些提示:
#
只能在客户端上处理,服务器只会忽略它们。这可能会导致搜索引擎(SEO)出现问题,重定向可能会导致重复页面重新加载。
这个页面有一些详细的解释,而一些参数不适用于角度应用程序(例如,不适用于JS禁用)
HTML5 pushstate的“缺点”是它需要服务器支持,正如Thierry所解释的那样。根据官方说法:
当路由器导航到新的组件视图时,它会使用该视图的URL更新浏览器的位置和历史记录。这是一个严格的本地URL。浏览器不应将此URL发送到服务器,也不应重新加载页面
路径定位策略
现代HTML5浏览器支持history.pushState
,这是一种在不触发服务器页面请求的情况下更改浏览器位置和历史的技术。路由器可以组成一个“自然”URL,它与需要加载页面的URL无法区分
以下是路由到xyz
组件的HTML5pushState样式的URL:localhost:4200/xyz/
HashLocationStrategy
较旧的浏览器在位置URL更改时向服务器发送页面请求,除非更改发生在
之后(称为散列)。路由器可以通过在应用程序中使用哈希组合路由URL来利用此异常
这里有一个散列样式的URL,它路由到xyz
组件:localhost:4200/src/#/xyz/
我想知道哪一个提供更多的网络应用程序
几乎所有角度项目都应使用默认的HTML5样式,如下所示:
只有当应用URL看起来像正常的Web URL(中间没有散列)时,这个选项才是可用的。
除非你有充分的理由求助于哈希路由,否则请坚持默认值。很抱歉,这个答案完全没有抓住要点。它没有提到设置额外的服务器端渲染和缓存(同构渲染)的可能性以及这会带来多少好处。与其评估技术,不如描述您遇到的问题的解决方案。