Node.js學習(五) - express.js - Router
這次我想要將controller資料,自動的建立他們相對的頁面連結設定,將要一套多用,不用浪費時間一條一條URL設定。
使用express.js的Router設定
將app.js精簡到只剩下
var express = require('express');
var port = 8088;
var app = express();
var server = app.listen(port, function () {
var host = server.address().address
var port = server.address().port
console.log('Node.js web server at port '+port+' is running..');
});
var HelpRouter = require('./routes/Help');
var TestRouter = require('./routes/Test');
var ApiRouter = require('./routes/api');
app.use('/Help',HelpRouter);
app.use('/Test',TestRouter);
app.use('/api',ApiRouter);
最重要的是,一套多用的controller該怎麼使用
我在routers資料夾,有一個api.js 內容如下
var express = require('express');
var router = express.Router();
var folder = './controllers/';
fs = require('fs');
fs.readdir(folder, (err, files) => {
files.forEach(file => {
var controller = file.replace('.js','');
if(controller!='Help' && controller!='Test'){
var obj = require('../controllers/'+controller);
for(var key in obj) {
if(typeof obj[key] === 'function'){
var aciton_url = '';
if(controller=='Help' || controller=='Test'){
continue;
} else {
action_url = '/'+controller+'/'+key;
}
router.post(action_url,function(req,res){
var dirs = req.url.split('/');
var action = dirs[dirs.length-1];
obj[action](req,res);
});
}
}
}
});
});
module.exports = router;
以後增加N個controller都不必自己再去設定url,
這樣會貼近我常用的PHP-CI的撰寫方式。