我目前正在使用一个URL解析器来格式化和更正相对链接。我指定了一些特殊字符,其中包括“#”。
我发现当我处理用Angular开发的页面时,这成为一个问题,因为在URL中使用了#。但是,在读取IETF protocol进行URL命名时,似乎#是保留字符。
有人可以向我解释Angular如何与URL命名交互吗?
答案 0 :(得分:0)
在有角度的项目中配置应用程序路由时,可以在常规HTML5路由(PathLocationStrategy
)或“哈希样式URL”路由(HashLocationStrategy
)之间进行选择。
默认值为PathLocationStrategy
,但是可以通过将{useHash: true}
作为第二个参数传递给RouterModule.forRoot()
函数来实现散列样式路由
根据Angular关于LocationStrategy and browser URL styles的官方文档:
较旧的浏览器在位置URL更改时向服务器发送页面请求,除非更改发生在“#”(称为“哈希”)之后。路由器可以通过在应用程序中使用带有哈希值的路由URL来利用此异常。
URL中的#
代表锚标识符(RFC1738),在链接到页面中的特定内容时非常有用。
HashLocationStrategy
对的攻击程度是符号#
之后的任何内容都不会发送到服务器的事实-使其非常适合用于存储应用程序状态。
通过散列路由,可以在子页面之类的页面上重新加载页面(或通过书签重新访问)
http://localhost:4200/#/articles/35
不向服务器查询子页面,而是返回主应用程序页面
http://localhost:4200/
通过这种方式,服务器实现只需要知道根页面(这是唯一要查询的内容)
使用PathLocationStrategy
(默认),需要将服务器设置为处理应用程序实现的每个URL的请求。