2013-10-02 2 views
0

Я обычно использую следующий код для управления маршрутами на сервере:Различие в методах добавления промежуточного уровня для Метеора

WebApp.connectHandlers.stack.splice(0, 0, { 
    route: '...', 
    handle: function(req, res, next) {...}, 
}); 

Однако я видел другой шаблон в некоторых местах:

WebApp.connectHandlers.use(function(req, res, next) { 
    ... 
}); 

Каковы различия между ними, кроме синтаксиса и управления маршрутами? Один из них лучше использовать из-за производительности или по другой причине?

ответ

3

Как работает промежуточное программное обеспечение, использует вид списка, а затем обрабатывает ответы. Так что если у вас есть

WebApp.connectHandlers.use(function(req, res, next) { 
    ... 
}); 

Если вы не до конца с ответом здесь, он будет вызывать next() и найти следующий обработчик соединять в стеке для запуска, и если это не имеет ничего следующего и так далее ,

Существует немного порядка, поэтому первый описанный вами метод добавляет что-то в начало стека (или индекс, указанный в сращивании), а второй добавляет его в конец стека.

Так Метеор это зависит от другого промежуточного программного обеспечения, если вы хотите получить доступ к req & res значения перед другими обработчиками вы можете использовать первый (например, какой-то HTTP Вход проверки/Обновление запроса WebSocket) и другой с .use для чего-то еще в конце стека (IP-адрес/проверка файлов cookie)

Одна вещь, которую следует отметить, хотя я не уверен на 100%, что этот Метеор может использовать промежуточное программное обеспечение, так что вам нужно доходите до стека до того, как метеор сделает так, что первый синтаксис может быть лучше, особенно если метеорит заканчивается запросом, поэтому те, что добавлены в конце, могут не иметь эффекта.

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