我刚才注意到,我们习惯使用的漫长而复杂的Facebook网址现在看起来像这样:
http://www.facebook.com/example.profile#!/pages/Another-Page/123456789012345
据我所知,今年早些时候它只是一个普通的URL片段式字符串(以...开头#
),没有感叹号.但现在它是一个shebang或hashbang(#!
),我以前只在shell脚本和Perl脚本中看到过.
在新的Twitter的网址,现在还采用了#!
符号.例如,Twitter个人资料网址现在看起来像这样:
http://twitter.com/#!/BoltClock
#!
现在是否在URL中起了一些特殊的作用,比如某个Ajax框架或某些东西,因为新的Facebook和Twitter界面现在基本上是Ajax化的?在我的URL中使用它会以任何方式使我的Web应用程序受益吗?
我正在使用Angular ui.router来浏览我的应用程序.通常,网址应如下所示:
http://localhost:8001/#/start
Run Code Online (Sandbox Code Playgroud)
但就我而言,它看起来像这样:
http://localhost:8001/#!/start
Run Code Online (Sandbox Code Playgroud)
这是什么意思?
我也认识到如果我从这个站点调用一个与我的起始页不同的URL,我总是被重定向,因为URL似乎无效.
mainApp.config(['$stateProvider', '$urlRouterProvider', function ($stateProvider, $urlRouterProvider) {
'use strict';
$urlRouterProvider.otherwise('start');
$stateProvider
.state('start', {
url: '/start',
templateUrl: 'views/start.html'
})
.state('registration-activate', {
url: '/registration/activate/{activationKey}',
templateUrl: 'views/registration-activation.html'
})
;
}]);
Run Code Online (Sandbox Code Playgroud)
每当我尝试调用localhost:8001 /#/ registration/activate/xyz时,我都会被重定向到起始页面.
我们正在开发带有哈希标签导航的 SPA。在另一个 SPA 网站上看到有散列标签 URL,如http://example.com/#!/users 我们的应用程序当前实现散列标签 URLS 没有 ! (bang,感叹号)像http://example.com/#/users 在 URL 中使用 bang 标记有什么原因吗?我已经检查了一些 SO 问题,一些文档: URL hash-bang (#!/) 前缀而不是 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
我的主要问题是 - 我们需要在哈希 URL 中使用感叹号吗?这有什么意义吗?
提前感谢您的回答!