2014-11-03 74 views
2

我正在尋找一種更好的方式來管理我在快速路由器中的邏輯。 這是一個代碼片段:如何將快速路由器拆分爲單獨的文件?

router.get('/get', function(req, res) { 

    if(typeof req.query.category !== undefined){ 

    //do something 

    } 

}); 

...但這裏puting我的邏輯使文件很容易生長。

不過,我覺得這一點:。

if(typeof req.query.category !== undefined){ 

    var gallery = new Gallery(req.query.category) 

} 

這樣我就可以在單獨的文件

1)如果在單獨的文件中存在變種庫(即galleryManager.js)我怎麼能包括文件處理的東西在我的路由器? 2)你使用什麼方法?

回答

3

這通常是我如何做到的。我絕不認爲這是做到這一點的最佳方式。但它是一種適合我的方法,可以讓事情更有條理。

app.js

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 

DEMO:

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

1

galleryManager.js文件應該是這個樣子:

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

在你的路由器/控制器,導入做到以下幾點:

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

在上面的要求中,您必須放入文件的路徑。這個例子假定這些文件都在同一個目錄中