如何将express路由器拆分为单独的文件

How to split express router to separate files?

本文关键字:单独 文件 拆分 路由器 express      更新时间:2023-09-26

我正在寻找一种更好的方法来管理express路由器中的逻辑。这是一个代码片段:

router.get('/get', function(req, res) {
  if(typeof req.query.category !== undefined){
    //do something
  }
});

但是把我的逻辑放在这里会使文件很容易增长。

我想:

if(typeof req.query.category !== undefined){
   var gallery = new Gallery(req.query.category)
}  

所以我可以在单独的文件中处理东西

1) 如果var Gallery存在于单独的文件(即galleryManager.js)中,我如何将该文件包含在我的路由器中?2) 你使用什么方法?

我通常就是这样做的。我并不是说这是最好的方法。但这是一种对我有效的方法,可以让事情更有条理。

app.jsroot

var express = require('express');
var app = express();
app.configure(function() {
    .. view engine stuff ..
    app.set('views', __dirname + '/views');
    app.use(app.router);
    app.use("/static", express.static(__dirname + '/static'));
});
require('./controllers/index.js')(app);
require('./controllers/page2.js')(app);
//server
var port = process.env.PORT || 5000;
app.listen(port);
console.log('Listening on port ',  port);

index.js控制器或路由器

module.exports = function(app)
{   
    app.get('/', function (req, res) {      
        res.render('index', { });
    });
}

文件结构

   -controller
      -index.js
      -page2.js
   -static
     -css
     -js
     -img
   -views
     -index. (ejs, jade, mustache) // or whatever you prefer
   app.js
   package.json

演示:

https://github.com/krishollenbeck/express-boilerplate

您的galleryManager.js文件应该类似于:

var Gallery = function Gallery(){
//...
}
//...
module.exports.Gallery = Gallery;

在您的路由器/控制器中,要导入,请执行以下操作:

var Gallery = require('./galleryManager').Gallery

在上面的要求中,您必须输入文件的路径。本例假设文件都在同一目录

相关文章: