为什么我们需要哈希导航网址中的爆炸标记?

时间:2017-09-27 07:34:34

标签: javascript hash single-page-application hashtag

我们正在使用哈希标记导航开发SPA。在另一个SPA网站上看到有像http://example.com/#!/users这样的哈希标记网址 我们的应用程序目前没有实现哈希标记URLS! (bang,感叹号),如http://example.com/#/users 在URL中使用爆炸标记是否有某些原因?我检查了几个SO问题,一些文档: URL hash-bang (#!/) prefix instead of simple hash (#/) in Angular 1.6 人们希望在他们的SPA中消除感叹号。

但是,Angular Changelog声明在URL中添加bang标记是一个重大变化: https://github.com/angular/angular.js/blob/master/CHANGELOG.md#location-due-to

Google的文档还会显示带惊叹号的示例: https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

我的主要问题是 - 我们在哈希网址中需要感叹号吗?它有意义吗?

提前感谢您的回答!

2 个答案:

答案 0 :(得分:3)

由于 @ceving 已经解释过,原因是避免与元素ID冲突。如果你看下面的例子并考虑使用一个名为" main"的角度控制器。关于如何解释URL会有冲突。

如果您点击"转到主要"你看到光标跳跃,否则就不会。



<a href="#main">Goto Main</a>

<a href="#!main">Open Main Controller</a>

<p id="main">I am main!</p>
&#13;
&#13;
&#13;

答案 1 :(得分:2)

RFC 3986指定URL片段以哈希开头。片段通常引用HTML锚点。 HTML 4定义HTML锚点的ID不得包含爆炸。

如果你想确保你的标签不与HTML锚点发生冲突,那么用爆炸标记标签可能会很有用。