Есть ли какие-то «особенности» у node.js require?

Недавно перешел на node c php. Пишу небольшой REST сервер с использованием ExpressJS. Для простоты решил написать всего несколько роутеров (чтобы не прописывать для каждого метода). Вот пример:
app.get('/v:version/:resource.:method',function(request,response){
    // подключаем метод
    var method = require('./'+request.params.resource+'.'+request.params.method+'v'+request.params.version+'.js')
    method.call(request,function(error,result){
      // отдаем данные или ошибку
    })
})

В этом случае обращение вида myserver.com/v1/users.get должно вызвать модуль users.getv1.js
Так я могу спокойно добавлять новые методы и мне лишь придется добавлять пару строчек в документации не дописывая новый роутер в код сервера.
Но кто-то из знакомых в разговоре упомянул, что так делать не стоит из-за каких-то особенностей require модули будут накапливаться в кеше и память начнет утекать. Каких именно особенностей он так пояснить и не смог, но сомнения у меня остались.
Вопрос - есть ли действительно какие-то "особенности" у require которые вышеописанный подход не позволят использовать? Или это все глупости? Заранее спасибо.
  • Вопрос задан
  • 4285 просмотров
Пригласить эксперта
Ответы на вопрос 2
@AndyGrom
Web-developer
Никаких утечек самого require не будет. Но беда в Вашем подходе следующего характера. require синхронный. Вы используете синхронный метод в асинхронной функции - это, в принципе плохо. Все вызовы require необходимо поместить в начало модуля, чтобы они были вызваны при загрузке модуля. Почитайте про хорошие практики по node.js в том числе и на Хабре. Вывод простой - синхронный код - зло.
Ответ написан
affka
@affka
http://affka.ru
Память течь не должна, @virpool прав. Я бы не рекомендовал использовать requirejs для ноды - он сильно усложняет отладку (когда действительно потребуется искать утечки памяти).
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы