1

我正在我的机器上本地测试一个网站。它使用 AngularJS 进行路由和页面更改,我正在尝试使用 Mongoose 网络服务器(非常轻)来测试路由。

我的代码如下:

app.config(['$locationProvider', '$routeProvider', function ($locationProvider, $routeProvider) {
    $locationProvider.html5Mode(true);
    $routeProvider.when('/who', {templateUrl: '/js/partials/who', controller: 'whoPage'});
    $routeProvider.when('/what', {templateUrl: 'partials/what'});
    $routeProvider.when('/want', {templateUrl: 'partials/want'});
    $routeProvider.otherwise({ redirectTo: '/' });
}]);

(我还没有为其他一些页面设置控制器。我一直在测试“谁”页面。)

我正在从 localhost:8080 运行该页面。在我的应用程序中,当我单击链接更改位置时,什么也没有发生。URL 更改为“localhost:8080/who”,但我没有从控制台收到任何消息,我的页面上也没有任何更改。但是,如果我随后刷新该 URL,则会收到 404 错误。

我没有设置任何服务器端路由。这是 Angular 应用程序的必需品吗?我写的代码有问题,还是应该尝试不同的测试网络服务器?

4

1 回答 1

0

$locationProvider.html5Mode(true);

将使角度使用 HTML5 History API 中的“推送状态”。

这意味着您将在地址栏中看到 url 更改,但这不会导致浏览器实际重新加载您的页面。当您重新加载页面时,浏览器现在将从没有它的网络服务器获取该 url。

一个常见的技巧是使用 URL 重写将任何 url 映射回 index.html。您应该注意不要重新映射指向静态文件的 url,例如您的 javascript 和 css 资源。这通常很容易,因为将所有 css 和 js 文件分组到某个目录中而不是将它们分散在顶级目录中是一个好习惯。

您可以在https://www.cesanta.com/developer/binary#_url_rewrites了解如何配置 mongoose URL 重写

于 2015-12-19T09:01:31.113 回答