Dan*_*iel 16
在 angular 项目中配置应用程序路由时,可以在常规 HTML5 路由 ( PathLocationStrategy) 或“散列式 URL”路由 ( HashLocationStrategy) 之间进行选择。
默认是PathLocationStrategy但散列式路由可以通过{useHash: true}作为第二个参数传递给RouterModule.forRoot()函数来实现
根据 Angular 关于LocationStrategy 和浏览器 URL 样式的官方文档:
旧版浏览器会在位置 URL 更改时向服务器发送页面请求,除非更改发生在“#”(称为“哈希”)之后。路由器可以通过使用散列组合应用程序内路由 URL 来利用此异常。
#URL 中的A表示锚标识符 ( RFC1738 ),在链接到页面中的特定内容时非常有用。
angular利用的HashLocationStrategy是这样一个事实,即符号之后的任何内容#都不会发送到服务器- 这使得使用它来存储应用程序状态非常理想。
使用哈希路由在子页面上重新加载页面(或通过书签重新访问),例如
http://localhost:4200/#/articles/35
不向服务器查询子页面,而是返回主应用程序页面
http://localhost:4200/
这样服务器实现只需要知道根页面(这是唯一会被查询的东西)
使用PathLocationStrategy(默认)服务器需要设置为处理应用程序实现的每个 URL 的请求。