2017-09-27 56 views
1

我们正在开发带有哈希标记导航的SPA。在另一个SPA网站上看到存在散列标记URL,例如http://example.com/#!/users 我们的应用程序当前实施散列标记URL而没有! (砰,感叹号)像http://example.com/#/users 是否有一些在URL中使用爆炸标记的原因?我检查了几个SO问题,一些文档: URL hash-bang (#!/) prefix instead of simple hash (#/) in Angular 1.6 人们希望摆脱他们的SPA中的感叹号。为什么我们需要在哈希导航URL中使用爆炸标记?

然而,角度更新日志指出这是显著的变化添加砰大关网址: https://github.com/angular/angular.js/blob/master/CHANGELOG.md#location-due-to

谷歌的文档还显示了感叹号的例子: https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

我的主要问题是 - 什么我们需要哈希URL中的感叹号?这有什么意义吗?

在此先感谢您的答案!

+0

这可能会帮助你https://stackoverflow.com/questions/46439079/is-there-a-way-using-angular-ui-router-not-show-login/ 46440162#46440162 – Raghav

+1

谢谢,拉格哈夫,为您的及时答案。但我的主要问题不是“如何摆脱Angular应用程序中的爆炸标记”,我们的SPA甚至不是Angular驱动的,它使用它自己的JS框架,但是“为什么我们需要在SPA URL的散列部分中感叹号?”我很好奇我们是否真的需要在URL中添加感叹号。如果是这样,为什么? –

+0

它提供了Angular应用程序的深层链接功能..请通过这个https://stackoverflow.com/questions/40478676/i-am-using-angular-and-my-url-always-has-a-exclamation-mark/40478862 .. – Raghav

回答

2

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

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

2

由于@ceving已经解释了原因是为了避免与元素id冲突。如果你看看下面的例子,并考虑例如一个名为“main”的角度控制器,那么应​​该如何解释URL会产生冲突。

如果你点击“转到主”,你会看到光标跳跃,否则它不会。

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

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

 
<p id="main">I am main!</p>

+0

感谢您的澄清。希望我能标出不止一个正确的答案。但是,唉......绿色选中标记作为第一个正确的答案。然而你的加入也是非常有价值的! –

+0

他确实应该得到这个答案。我也认为我只是一个补充,而不是替代。 – Toxantron

相关问题