一尘不染

没有哈希'#'的AngularJS路由

angularjs

我正在学习AngularJS,有一件事让我很烦。

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

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

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

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


阅读 280

收藏
2020-07-04

共1个答案

一尘不染

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

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

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

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

2020-07-04