使用Angular routeProvider和Express路线

我正在尝试使angular的routeProviderpipe理我的应用程序的所有路线。 我在angular(客户端)的app.js文件中相应地定义了我的路由:

(function(){ var app = angular.module("Crowdsourcing", ["ngRoute"]); app.config(function($routeProvider){ $routeProvider .when("/single/:street/:buildingNumber/:apartmentNumber", { templateUrl: "/views/single.html'", controller: "ListingCtrl" }) .otherwise({redirectTo:"/"}); }); }()); 

然而,当在浏览器上写入一个URL(例如/ single)时,试图由我的后端express / node api来处理这个请求。 因此,它不会被find,因为后端路由是例如/ api / foo。 我如何确保Angular的routeProvider始终pipe理我的请求?

更重要的是应用程序的基本stream程是什么? 当客户端编写一个URL时,应用程序如何知道url是由express js还是由routeProvider处理?

通常,您可以使用主机名和页面URL之间的#号来区分由angular色应用程序处理的URL与快速URL。

例如:

如果你想从后端请求一个URL,你可以调用: http://host.com/api/foo/http://host.com/api/foo/

相反,如果你想从angular应用程序请求一个URL,你会打电话: http://host.com/#/single : http://host.com/#/single

所以,如果你想调用angular度的应用程序的URL你有添加#号。

在使用单页面应用程序时,这是一个非常重要的事实。

更新:

看看这个种子项目: https : //github.com/btford/angular-express-seed

它使用与您的项目类似的技术堆栈。 这应该让你更清楚。

前几天我也遇到了同样的问题。 问题在于,即使您调用数据服务器,也会将其redirect到客户端路由,并在$routeProvidersearch。

您需要确保在server.js添加类似以下代码的内容。 这意味着,当以/api开始呼叫时,它将redirect到服务器端的路由而不是客户端路由。

 var api = express.Router(); require('./app/routes')(api); app.use('/api', api); 

在你的工厂里,当我们进行下面的调用时,这将会转到服务器端routes.js而不是客户端。

 $resource('/api/adduser')