Angular中的Hash与Hashbang的区别

4
为什么Angular有时会在URL中使用#,而有时又使用#!?我从头开始编写了两个Angular应用程序。都没有使用HTML5模式。两者都有相同的默认路由。但是,默认URL显示不同。
我至少已经看到这种随机行为一年了......早在angular-route v1.6之前。此外,我一直使用angular-ui-router。
默认路由:
configRoutes.$inject = ['$urlRouterProvider'];
function configRoutes ($urlRouterProvider) {
    $urlRouterProvider.otherwise('/');
}

应用程序#1将... http://localhost:3000 ...解析为... http://localhost:3000/#/

应用程序#2将... http://localhost:3001 ...解析为... http://localhost:3001/#!/

请注意默认URL中的最后两个字符。

我知道如何激活HTML5模式和美化URL。但这不是我的问题所在。我真的很想了解上述两个URL的意义以及Angular为什么要以不同的方式编写它们。

当前版本:
angular-ui-router v0.3.2
angular v1.6.0


这很可能与哈希前缀设置有关 - 这取决于 Angular 版本的默认设置。不确定 Angular UI 路由器是否会混淆事情。您是否在两个应用程序中使用相同的 Angular 版本?尝试在应用程序的 config 块中手动设置 $locationProvider.hashPrefix(),并查看它如何影响 URL。 - IAmDranged
可能是URL hash-bang (#!/)前缀而不是简单的hash (#/)的重复问题。 - Mistalis
1个回答

4

当我们从Angular 1.5升级到Angular 1.6时,应用程序的URL从/#/变为了/#!/。我们通过在应用程序配置中配置hashPrefix来解决了这个问题:

angular.module("myApp").config(function($locationProvider) {
   $locationProvider.hashPrefix("");  
});

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接