小编典典

AngularJS路由没有哈希'#'

all

我正在学习 AngularJS,但有一件事让我很恼火。

我用来$routeProvider为我的应用程序声明路由规则:

$routeProvider.when('/test', {
  controller: TestCtrl,
  templateUrl: 'views/test.html'
})
.otherwise({ redirectTo: '/test' });

但是当我在浏览器中导航到我的应用程序时,我看到app/#/test的不是app/test.

所以我的问题是为什么 AngularJS 会将此哈希添加#到 url?有没有可能避免它?


阅读 66

收藏
2022-06-10

共1个答案

小编典典

事实上,对于非 HTML5 浏览器,您需要 #(井号标签)。

否则,他们只会在提到的 href 处对服务器进行 HTTP 调用。# 是一个旧的浏览器短路,它不会触发请求,它允许许多 js
框架在此之上构建自己的客户端重新路由。

如果可用,您可以使用$locationProvider.html5Mode(true)告诉 Angular 使用 HTML5 策略。

这里是支持 HTML5 策略的浏览器列表:http:
//caniuse.com/#feat=history

2022-06-10