Angular和express的路由是怎么回事?高手大大看看吧
发布于 10 年前 作者 coolicer 9256 次浏览 最后一次编辑是 8 年前

现在做了一个应用,都是纯后端提供数据。所以用了angular的路由,现在要导出excel。我想用nodejs去取得路由,然后做功能。现在是angular的路由感觉不跟express一样

var http = require('http');
var url = require("url");
var express = require('express');
var app = express();

app.use(express.static(__dirname+'/app')); //所有的静态页面和资源

app.use(function(req,res,next){
    console.log(123);
    next();
})
http.createServer(app).listen(3000, function(){
    console.log('Server start at port 3000')
})

现在123是打印不出来,因为路由都在前端的angular。怎么做啊,救命啊。。。。

7 回复

angular 路由???

你应该定义一些 angular 服务进行ajax 请求啊…

angular(router) 路由 应该是客户端

你要与服务端进行交互,需要定义一些service…

没怎么用过angular

定义service之后,可以回传url param吧。express要路由来做一些功能,前端实现不了。

照现在的情况来看你应该去读文档而不是来这发帖求助

打印不出来是你的程序问题,angularjs前端的路由每次响应也是会修改url的,只是有点类似于锚定一样的,比如:

//前一个url
http://localhost:3000/index#/msort

//切换到后一个url
localhost:3000/index#/sort

在这中间虽然都是在index下,但是也一样会有请求发送到服务端的,你的不行事因为你的代码问题,把你的代码改成这样试下:

app.use(function(req,res,next){
    console.log(123);
    next();
})
;

app.use(express.static(__dirname+'/app')); //所有的静态页面和资源

http.createServer(app).listen(3000, function(){
    console.log('Server start at port 3000')
})

你在浏览器上这样请求看下,

http://localhost:3000/#index

一定会打印123。

楼上有人说定义服务或者使用ajax发送请求,这都是不需要的,angularjs在路由切换的时候也是会发送请求的,比如angularjs的路由这样写:

app.config(['$routeProvider', function($routeProvider){
 //定义路由
 $routeProvider
  .when('/', { templateUrl: 'part/rl', controller: 'RlCtrl' })
  .when('/sort', { templateUrl: 'part/sort/23/34', controller: 'SortCtrl' })
  .otherwise({ redirectTo: '/' });

}]);

这里注意路由sort这里请求的url是part/sort/23/34,当你切换路由的时候前端的url会从:


http://localhost:3001
变成
http://localhost:3001/#sort

但是其实后台会发送请求这个请求:http://localhost:3001/part/23/34/45

express中添加如下代码:

app.get('/part/:p1/:p2/:p3', function(req, res, next){

 console.log(req.originalUrl);

 next();

});

所以如果你只是想获取路由你没有必要写服务,写ajax请求,直接路由就可以控制,你带上你想要的参数就行了。

回到顶部