Page 125 - AngularJS权威教程
P. 125
12.5 路由模式 105
replace(可选,字符串) 1
想要修改成的路径。
2
12.5 路由模式
3
不同的路由模式在浏览器的地址栏中会以不同的URL格式呈现。$location服务默认会使用
标签模式来进行路由。
4
路由模式决定你的站点的URL长成什么样子。
标签模式
5
标签(hashbang)是AngularJS用来同你的应用内部进行链接的技巧。标签模式是HTML5模
式的降级方案,URL路径会以#符号开头。标签模式不需要重写<a href=""></a>标签,也不需 6
要任何服务器端的支持。如果没有进行额外的指定,AngularJS将默认使用标签模式。
使用标签模式的URL看起来是这样的: 7
http://yoursite.com/#!/inbox/all
如果要显式指定配置并使用标签模式,需要在应用模块的config函数中进行配置: 8
angular.module('myApp', ['ngRoute'])
.config(['$locationProvider', function($locationProvider) { 9
$locationProvider.html5Mode(false);
}]);
我们还可以配置hashPrefix,也就是标签模式下标签默认的前缀!符号。这个前缀也是 10
AngularJS在比较老的浏览器中降级机制的一部分。这个符号是可以配置的:
angular.module('myApp', ['ngRoute']) 11
.config(['$locationProvider', function($locationProvider) {
$locationProvider.html5Mode(false);
$locationProvider.hashPrefix('!'); 12
}]);
12.5.1 HTML5 模式 13
AngularJS支持的另外一种路由模式是html5模式。在这个模式中,URL看起来和普通的URL 14
一样(在老式浏览器中看起来还是使用标签的URL)。例如,同样的路由在HTML5模式中看起来
是这样的:
15
http://yoursite.com/inbox/all
在AngularJS内部, $location服务通过HTML5历史API让应用能够使用普通的URL路径来 16
路由。当浏览器不支持HTML5历史API时,$location服务会自动使用标签模式的URL作为替代
方案。
17
$location服务还有一个有趣的功能,当一个支持HTML5历史API的现代浏览器加载了一个
带标签的URL时,它会为用户重写这个URL。
18