一尘不染

JavaScript没有hash'#'的AngularJS路由

javascript

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

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

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

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

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


阅读 417

收藏
2020-04-25

共1个答案

一尘不染

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

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

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

2020-04-25