Я знаю, что этому вопросу более 5 лет, и приведенные ответы хороши, но я хотел что-то более мощное для экспресса, поэтому я создал пакет express-map2
для npm. Я собирался назвать его просто express-map
, однако people в Yahoo уже имеют пакет с таким именем, поэтому мне пришлось переименовать мой пакет.
1. основное использование:
app.js (or whatever you call it)
var app = require('express'); // 1. include express
app.set('controllers',__dirname+'/controllers/');// 2. set path to your controllers.
require('express-map2')(app); // 3. patch map() into express
app.map({
'GET /':'test',
'GET /foo':'middleware.foo,test',
'GET /bar':'middleware.bar,test'// seperate your handlers with a comma.
});
использование контроллера:
//single function
module.exports = function(req,res){
};
//export an object with multiple functions.
module.exports = {
foo: function(req,res){
},
bar: function(req,res){
}
};
2. расширенное использование с префиксами:
app.map('/api/v1/books',{
'GET /': 'books.list', // GET /api/v1/books
'GET /:id': 'books.loadOne', // GET /api/v1/books/5
'DELETE /:id': 'books.delete', // DELETE /api/v1/books/5
'PUT /:id': 'books.update', // PUT /api/v1/books/5
'POST /': 'books.create' // POST /api/v1/books
});
Как видите, это экономит массу времени и упрощает написание, поддержку и понимание маршрутизации вашего приложения. он поддерживает все выраженные http-глаголы, а также специальный метод .all()
.