2014-07-08 2 views
0

В моем приложении NodeJS, использующем Express, кажется, что мне нужно добавить все мои «get» пути к переменной «app» express. Было бы неплохо, если бы мне пришлось регистрировать модуль и не регистрировать каждый маршрут. Я исхожу из фона ASP.NET MVC, где, если я создаю класс контроллера, он автоматически перенаправляется. Есть ли способ заставить Express работать так, или мне нужно добавить маршруты к этому постоянно растущему файлу путей? Может ли это сделать какое-то отражение или есть способ установить это?Как я могу избежать добавления всех маршрутов в объект приложения в NodeJS с помощью Express?

var app = express(); 

// all environments 
app.set('port', process.env.PORT || 3000); 
app.set('views', path.join(__dirname, 'views')); 
app.set('view engine', 'jade'); 
app.use(express.favicon()); 
app.use(express.logger('dev')); 
app.use(express.json()); 
app.use(express.urlencoded()); 
app.use(express.methodOverride()); 
app.use(app.router); 

import stylus = require('stylus'); 
app.use(stylus.middleware(path.join(__dirname, 'public'))); 
app.use(express.static(path.join(__dirname, 'public'))); 

// development only 
if ('development' == app.get('env')) { 
    app.use(express.errorHandler()); 
} 

app.get('/', routes.index); 
app.get('/users', user.list); 


http.createServer(app).listen(app.get('port'), function() { 
    console.log('Express server listening on port ' + app.get('port')); 
}); 

ответ

1

С Express 4 вы можете установить маршрутизаторы (как миниатюрные приложения Express) на базовом пути, так что вы можете настроить маршрутизатор для обработки всех /user/* пути, один для /article/* путей и т.д .:

app.use('/user', routers.user); 
app.use('/article', routers.article); 
// ... 

Затем вы можете поместить логику для этих маршрутизаторов в отдельные файлы и просто потребовать и использовать их там, где это имеет смысл (например, в вашем основном app.js или даже внутри другого маршрутизатора).

Для получения более подробной информации см. this Express 4 docs.

Смежные вопросы