角度路线包含#!在网址而不是#

Sam*_*wal 15 javascript angularjs single-page-application ngroute angularjs-ng-route

最近我注意到ngRoute在AngularJS应用程序中使用模块时,路由包含#!在URL中,之前就是#.

例如,www.webiste.com/#/login成为www.website.com/#!/login

我必须启用html5Mode并禁用requireBase使用代码整体删除基础,

$locationProvider.html5Mode({
       enabled: true,
       requireBase: false
});
Run Code Online (Sandbox Code Playgroud)

并且URL更改www.website.com/login工作正常,但具有误导性,而不是Angular SPA URL的样子.

如果我没有启用html5Mode,则URL被编码,我无法解决它.所以www.website.com/#/login变成www.website.com/#!/#%2Flogin(注意后者/被编码为%2F).

这是开发人员针对某些特定目的实施的更改吗?它有什么不同?我需要对应用程序进行哪些更改才能使其正常运行?难道我做错了什么?

Github问题:https://github.com/angular/angular.js/issues/15547

Ale*_*lke 4

这就是所谓的哈希爆炸。

有一段时间 Twitter 也在使用同样的东西。它允许 AJAX 调用,让搜索引擎知道您的路径,而无需使用“真实”路径。但它被认为已经过时了。

https://developers.google.com/webmasters/ajax-crawling/docs/getting-started

stackoverflow 上还有另外一个答案:

做像 Twitter、Hash-Bang #! 这样的链接 网址


更新:

不再需要哈希爆炸的原因之一是我们可以在不重新加载页面的情况下推送历史状态。像 React 这样的所谓“一页”网站就是这样做的。