现在做了一个应用,都是纯后端提供数据。所以用了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 回复
打印不出来是你的程序问题,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请求,直接路由就可以控制,你带上你想要的参数就行了。