2013-11-06 5 views
0

Я создаю основу для обработки активов для экспресс-доставки.Остановить прослушивание экспресс-маршрута

Он будет автоматически перезагружать файлы, которые были изменены, без перезапуска всего приложения. Он знает, какие файлы сделали какие привязки (например, app.get('/asdf')), и когда этот файл будет изменен, он отвяжет маршрут и перепроверку с измененным файлом.

позволяет сказать, что у вас есть экспресс-файл маршрутизатора, как это:

app.get('/my_route', method); 

раз изменить его, мне нужно, чтобы запустить что-то вроде ~~~~~

// pseudo code -- I need something like this 
app.unbind('get', '/my_route', method); 

~~~~~

, прежде чем перезагружать его. Так есть метод unbind?

Нужно ли мне вручную отредактировать объект маршрута?

Как только я узнаю, я смогу изменить файл маршрутизатора и отключить старые прослушиватели, а также добавить новые. Я сделал что-то similar for socket.io, но мне нужно найти способ развязать в экспресс

Спасибо!

ответ

1

Вы можете перебрать app.routes и удалить маршрут, или непосредственно изменить функцию обратного вызова. Это то, что объект маршрутов может выглядеть следующим образом:

{ get: 
    [ { path: '/', 
     method: 'get', 
     callbacks: [Object], 
     keys: [], 
     regexp: /^\/\/?$/i }, 
    { path: '/user/:id', 
     method: 'get', 
     callbacks: [Object], 
     keys: [{ name: 'id', optional: false }], 
     regexp: /^\/user\/(?:([^\/]+?))\/?$/i } ] 

Таким образом, вы могли бы создать что-то вроде этого:

function unbind(method, path) { 
    var routes = app.routes[method]; 
    for (var i = 0; i < routes.length; i++) 
    if (routes[i].path == path) 
     routes.splice(i, 1); 
}; 

оригинальный обработчик маршрут будет в app.routes.method[i].callbacks, который возвращает массив.

2

Я предполагаю, что маршрут маршрута сам по себе не изменяется.

В конце концов, какие изменения являются «методом», который прилагается к указанному маршруту, поэтому, если вы можете абстрагировать определение метода и разрешить его изменять путем «перезагрузки» файла, который был изменен, не нужно «развязывать» маршрут.

Возможно, промежуточная функция?

Просто мои $ 0,02

Приветствия

+0

Промежуточная функция будет моим предложением. – robertklep

+0

Я дам +1, потому что я подумал об этом, но я бы хотел, чтобы структура была гибкой, поэтому им не нужно изучать специальный синтаксис для определения маршрутов, чтобы вписаться в слой абстракции. – Funkodebat

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