javascript - 在单个 .js 文件中快速路由

标签 javascript node.js express

我是 Node/Express 的新手,我认为这是一个简单的问题,但如果我的逻辑/理解是正确的,我还不太清楚。

这是我的应用程序结构的简化版本:

/app
  /routes
    filter.js
    index.js
  app.js

我已经在我的 app.js 文件中定义了我的路由,就像这样。

// app.js

app.use('/', require('./routes/index'));
app.use('/filterone', require('./routes/filter'));
app.use('/filtertwo', require('./routes/filter'));

我想将来自/filterone/filtertwo 的流量指向我的filter.js 路由,然后在路由中我想像这样处理它们:

// filter.js

router.get('/filterone', function(req, res, next) {
  // do something
}

router.get('/filtertwo', function(req, res, next) {
  // do something
}

这是执行此操作的正确方法吗?或者我应该以不同的方式处理我的路线吗?

最佳答案

我不相信您拥有的代码可以完成您想要完成的任务。当你这样做时:

app.use('/filterone', require('./routes/filter'));

您正在将您在 filter.js 中定义的路由添加到您的应用的路由中,并预先附加了 '/filterone'。由于您定义了过滤器 '/filterone' 路由(我假设这是在 filter.js 中)。这意味着要访问您需要查询的路由 /filterone/filterone

Andreas Rau 的回答是可行的,但如果您想要多个路由文件,您只需添加一个小文件即可。

//app.js

const express = require('express'),
      index = require('./routes/index')
      filters = require('./routes/filter'),
      app = express();

app.use('/', index);
app.use('/filter', filters);

这样您就可以使用/filter/route_name 访问您的过滤路由。如果它们在不同的路由文件中,这将使您可以自由地调用相同的东西。例如,您可能想要显示一个过滤器并在您的索引中显示一些内容。这样你就可以在各自的文件中调用它们 show 并且索引显示路由是 /show 并且过滤器显示路由是 /filter/show

编辑* 这是您的路由文件的示例,该示例基于 Andreas Rau 的回答并使用了子路由:

routes/filter.js:

const express = require('express'),
      router = express.Router();

router.get('/show',(req,res) => {
 //handle /filter/show
} );


router.get('/filterone',(req,res) => {
 //handle /filter/filterone
} );

router.get('/filtertwo',(req,res) => {
 //handle /filter/filtertwo
} );

module.exports = router;

routes/index.js:

const express = require('express'),
      router = express.Router();

router.get('/show',(req,res) => {
 //handle /show
} );

module.exports = router;

关于javascript - 在单个 .js 文件中快速路由,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41002012/

相关文章:

javascript - ASP.NET WebForm 中的 jQueryMobile

Javascript 或 jQuery png 播放器

javascript - Jquery:表单验证不起作用

javascript - 如何在同一个提交按钮中放置一个 onclick 和一个 return false 语句?

node.js - 如何使用 Sails.js/Waterline 以多对多的方式将模型与其自身关联?

node.js - 如何从node.js后端获取客户端的错误对象?

node.js - 如何使用 gulp-tap 将文件名传递给 Gulp 管道中的下一个操作?

javascript - 如何将github OAuth数据发送给客户端?

node.js - Sequelize - 如何在嵌套关联中使用 where 子句?

node.js - mongodb 的 $in 函数在 Node js 中不起作用,除了 :(