Node.js重定向到另一个node.js文件

时间:2012-04-19 06:52:16

标签: node.js express

我想从一个nodejs文件到另一个nodejs文件进行重定向。我使用res.redirect(URL),但执行时说“不能GET / nodepage”

目前我正在使用

// Handler for GET /
app.get('/nodepostgres', function(req, res){
    res.redirect('/nodepost.js?a=1');
}); 

1 个答案:

答案 0 :(得分:4)

我认为有些事情你没有正确解释或者在你的问题中没有正确理解。

我不确定您的意思"从一个nodejs文件重定向到另一个nodejs文件"。您似乎认为节点脚本文件对应于URL(或页面)。那是错的。节点脚本对应于可能(或可能不)通过多个URL公开多个页面的应用程序,并且可以从其他脚本文件导入应用程序逻辑(您将为站点或应用程序运行单个根脚本文件)。它与你所知道的(vannilla,没有框架)PHP完全不同。

通过不同的网址公开不同的网页称为路由,有关路由的所有Express文档都可以是found here

我的理解是你试图为每个脚本创建一个函数/ page / url:nodepost.js文件是一个页面。代码组织是一件好事,但我们首先关注node + express如何工作。

根据我的理解,你的应用程序有一些暴露的网址,让我们说:

  • " /"主页
  • " / nodepostgre" (也许接受一个' arg?)
  • " / nodepost"接受一个arg:a

注意:我们忘记了file = page的ID,我们不希望在网址上显示扩展程序,因此nodepost.js变为nodepost

你可以做的是设置3个网址:

app.get('/', function(req, res) { res.render('home'); }); // render the home page
app.get('/nodepost', function(req, res) { // expose the nodepost function
  var a = req.params.a;
  doSomethingWith(a);
  // res.render, res.send ? whatever you want...
]);
app.get('/nodepostgres', function(req, res){ // use of res.redirect(url[, status])
  res.redirect('/nodepost');
});

这就是你想要的吗?

然后,这是处理params的更优雅方式(" a")。

app.get('/notepost/:a', function(req, res) { // called via /nodepost/here_goes_a_valu ; no "?"
  var a = req.params.a;

});

为什么会更好?

  1. 尊重REST(可能不是描述休息的最佳链接,但......)
  2. 允许您公开' / nodepost'没有参数
  3. 当然还有一百万件事