请问如何简化 routes 规则?
发布于 11 年前 作者 golbz 4289 次浏览 最后一次编辑是 8 年前

目前是这样子写的:

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函数,然后就能通过文件定义了:

大概就是上面一个是路由的helper,下面那个就是路由规则的写法了。

你可以写一套规则,根据目录结构实现自动route,缺点的不够灵活,优点是省事。

这样写挺好的,团队开发的话你会发现让后来的人很容易看懂代码,找到代码。

你现在的写法应该是官方的,自动就生成了这种格式的,这样写维护性可读性确实高点。

这样写便于维护和别人看你的代码,代码简洁了别人也就不容意看懂了。

回到顶部