我正在使用Node作为后端Angular的前端,但如果为前端和后端声明相同的路由会发生什么。我还没有尝试过。
例如:如果我正在构建一个TODO应用程序,并且我有/ todos后端服务,并且我使用angular渲染todos视图使用相同的路径。
答案 0 :(得分:3)
AngularJS默认处理#
之后的路线。如果你不改变它,那么什么都不会发生。
否则,将调用后端路由。
答案 1 :(得分:1)
Angular是客户端浏览器框架。您的应用默认为斜杠(/),它指向您的index.html。您的路由前缀为 hash(#),这会阻止浏览器向服务器发出请求。
Angular默认为客户端&使用自己的路由机制。 Express提供服务器端RESTful路由,其行为类似于角度应用程序的REST Api。
如果你想从默认的角度路由机制中使用HTML5 Pushstate API(删除 hash(/)),唯一能区分角度路由和express / server路由的东西,你只需要如下所示构建您的应用程序。
express()
.use('/api', backend) // backend is express app
.use('/', www) // www is public/static files
.all('/*', function (req, res, next) {
"use strict";
// Just send the index.html for other files to support HTML5Mode
res.sendfile('./app/index.html', {root: __dirname});
})
.listen(process.env.PORT || 8888, function () {
debug('Express dev server listening on port ');
});
您的快速/服务器路线位于 / api 部分之后,其他路线(显然是您的角度路线)将返回 index.html(html快照)。
上述机制最适合MEAN网络应用。
答案 2 :(得分:0)
Angular在#like myhost.io/angular /#/ someroute 之后提供自己的路由,而节点提供像 myhost.io/some/other/route 那样的普通路线几乎不可能失败!
注意:强>
但您必须小心设置路线,因为如果您有静态文件(例如 angular 客户端),那么使用快递或具有相同路径的路线将无效连接。