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

标签 node.js express

我想从一个nodejs文件重定向到另一个nodejs文件。我使用了 res.redirect(URL),但执行时显示“无法获取/nodepage”

目前我正在使用

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

最佳答案

我认为您在问题中没有正确解释或没有正确理解一些事情。

我不确定“从一个nodejs文件重定向到另一个nodejs文件”是什么意思。您似乎认为 Node 脚本文件对应于 URL(或页面)。那是错误的。 Node 脚本对应于一个应用程序,该应用程序可能(或可能不)通过多个 URL 公开多个页面,并且可以从其他脚本文件导入应用程序逻辑(您将为站点或应用程序运行单个根脚本文件)。它与您所了解的(普通、无框架)PHP 完全不同。

通过不同的url暴露不同的页面称为路由,所有关于路由的Express文档都可以是found here .

我的理解是,您试图为每个脚本创建一个函数/页面/Url:nodepost.js 文件是一个页面。代码组织是一件好事,但让我们首先关注 Node + Express 的工作原理。

据我了解,您的应用程序有一些暴露的网址,比方说:

  • “/”主页
  • “/nodepostgre”(也许接受“a”参数?)
  • “/nodepost”接受参数:a

注意:我们忘记了 file = page 的 id,我们不希望 URL 上出现扩展名,因此 nodepost.js 变为 nodepost

您可以做的是设置 3 个 url 说明:

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');
});

这就是你想要的吗?

然后,这是一种更优雅的方式来处理参数(“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. 当然还有一百万个其他东西

关于Node.js 重定向到另一个 Node.js 文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10222986/

相关文章:

javascript - 如何在浏览器中使用 .emit() 和 .on() 方法?

javascript - 合并 MongoDB 查询

javascript - express.js 和 mysql 身份验证

node.js - 使用 PostgreSQL 的 SequelizeDatabaseError UPDATE

node.js - 这 “scheme don' t具有注册处理程序的错误是什么?

javascript - 为什么使用 Mongoose 将数据存储两次?

node.js - 从 Cloud Functions Realtime Database 中的子引用获取父 Node 的原始值 "val()"数据

javascript - 如何在express中为静态文件设置动态路由

javascript - React + Express - 在开发时用什么服务代替/构建

javascript - Nodejs Express 多个参数不能很好地工作