如果我使用nodejs和angular.js,我可以映射/ status和/ status /:id吗?

时间:2015-07-02 12:56:41

标签: angularjs node.js routes connect

我在路由/状态和/ status /:id方面遇到了一些问题。我收到“无法获取/状态”错误消息

在角度我写了:

App.config(['$routeProvider', '$locationProvider', function($routeProvider,$locationProvider){
    $routeProvider.when('/status', {
        templateUrl:    'views/statusList',
        controller:     'dailyStatusCtrl'
    });
    $routeProvider.when('/status/:oldDate', {
        templateUrl:    'views/statusList',
        controller:     'dailyStatusCtrl'
    });
    $routeProvider.otherwise({redirectTo: '/'});
    $locationProvider.html5Mode(true).hashPrefix('!');
}]);

在nodejs方面我使用jade并写了:

server.use(connRoute(function(router){
    router.get('/', function (req, res, next){
      console.log('/ router');
      res.render('index');
    });
    router.get('/views/:view', function(req, res){
        res.render(req.params.view)
    });
    router.get('status/:id', function (req, res, next){
        console.log('status * router');
        res.render('index');
    });
    router.get('*', function (req, res, next){
        console.log('** router');
        res.render('index');
    });
}));

/ status /:id的部分是一个测试。但它不起作用。我收到消息:“/ status”的“无法获取/状态”,但它适用于“/ status / somecontent”。

我的代码有什么问题?我如何使用/ status und / status /:id?

如果没有第二个路由器,我会得到“无法获取/状态/某些内容”,但它正在为/ status工作。

由于

修改1:

我已将节点中的路线编辑为:

server.use(connRoute(function(router){
    router.get('/', function (req, res, next){
      res.render('index');
    });
    router.get('/views/:view', function(req, res, next){
        res.render(req.params.view)
    });
}));

并添加connect-modrewrite:

server.use(modRewrite([
    '^([^.]+)$ /index.html [L]'
]));

但重写规则是错误的。我无法重新加载主页面(/)。任何其他页面都无法重新加载。或者这是订单中的问题吗?

这是实际的顺序:

server.use(connRoute(function(router){
    router.get('/', function (req, res, next){
      res.render('index');
    });
    router.get('/views/:view', function(req, res, next){
        res.render(req.params.view)
    });
}));


server.use(modRewrite([
    '^([^.]+)$ /index.html [L]'
]));


server.use(servStatic(__dirname + '/../logbook'));

正确的modRewrite规则的任何想法?

1 个答案:

答案 0 :(得分:0)

如果你为每个url都有一个路由器的条目,那么没有modrewrite就可以工作。不要忘记使用“功能(req,res,next)”。

server.use(connRoute(function(router){
    router.get('/', function (req, res, next){
      res.render('index');
    });
    router.get('/status', function (req, res, next){
      res.render('index');
    });
    router.get('/status/:olddate', function (req, res, next){
      res.render('index');
    });
    router.get('/views/:view', function(req, res, next){
        res.render(req.params.view)
    });
}));