N-Blog的教程,和网上大多数主流教程,Router和Controller紧密耦合。虽然Router也是Controller的一部分,但是这样看怎么样也不是很优雅。
所以一般而言,都会怎么做?没有一个清晰的路由表很不爽的。
我目前的做法是将代码导出模块,然后在路由表传入。
这是routers/index.js
var Auth = require('../controller/authorization'),
ArticleHandler = require('../controller/articles');
module.exports = function(app) {
// router of index
app.get('/', function(req, res){res.end("Hello world!")});
// router of /article
app.get('/articles', ArticleHandler.list_articles);
app.post('/articles', Auth.auth, ArticleHandler.add_article);
// router of /article/(.*)
app.put('/articles/:id', Auth.auth, ArticleHandler.modify_article);
app.get('/articles/:id', ArticleHandler.get_a_article);
app.delete('/articles/:id', Auth.auth, ArticleHandler.remove_article);
// router of /api-auth
app.post('/api-auth', Auth.get_token);
// router of /tags
app.get('/tags', function(req, res){});
// todo
};
然后controller里有articles.js和authorization.js。
以articles.js为例,里面是一个Article类,然后暴露Article的接口。
var Article = require('../models/articles'),
User = require('../models/users'),
Auth = require('authorization');
function ArticleHandler() {
//Article Handlers
}
ArticleHandler.list_articles = function(req, res) {
// some statements
};
// Others
module.exports = ArticleHandler;
感觉比较蛋疼的。
不知你们的通用做法是?
6 回复