请问如何简化 routes 规则?
目前是这样子写的:
app.get('/admin/index', admin.index);
app.get('/admin/login', admin.login);
app.get('/admin/logout', admin.logout);
app.get('/admin/news_list', admin.news_list);
app.get('/admin/users', admin.users);
看起来很傻的感觉,请问各位是如何写 routes 的? 怎么简化一下这个?
9 回复
大部分框架都是这样的,你可以用数组
admin["login"]=function(){}
function get(url){
var name = url.split('/')[1];
admin[name]();
}
但这样可读性不好,维护也不方便。
####你可以这样
var pages = [
{route: '', output: 'Woohoo!'},
{route: 'about', output: 'A simple routing with Node example'},
{route: 'another page', output: function() {return 'Here\'s '+this.
route;}},
];
####或者
module.exports = function(app){
app.get('/',function(req,res){
res.render('index',{
//something to here
});
});
});
楼主这样写挺好的,非常方便查找。 有些简化可以从 url 设计上入手,例如设计成 restful格式的
* GET /users => list()
* GET /users/:id => show(req.params.id)
* POST /users => create()
* PATCH /users/:id => update(req.params.id)
* DELETE /users/:id => delete(req.params.id)
这样可以用一些路由库来简化 https://github.com/node-modules/restful-router
写一个router函数,然后就能通过文件定义了:
- https://github.com/XadillaX/xplan-backend/blob/master/router/index.js
- https://github.com/XadillaX/xplan-backend/blob/master/router/main-rule/user.js
大概就是上面一个是路由的helper,下面那个就是路由规则的写法了。
你可以写一套规则,根据目录结构实现自动route,缺点的不够灵活,优点是省事。
这样写挺好的,团队开发的话你会发现让后来的人很容易看懂代码,找到代码。
顶这个
你现在的写法应该是官方的,自动就生成了这种格式的,这样写维护性可读性确实高点。
这样写便于维护和别人看你的代码,代码简洁了别人也就不容意看懂了。