Возможно ли горячая перезагрузка внешних js-файлов в node.js на основе его метки времени?Горячая перезагрузка внешнего js-файла в node.js, если есть какие-либо изменения в файле
Я знаю Node.js модуля кэшей после первой загрузки времени здесь: http://nodejs.org/docs/latest/api/modules.html#modules_caching
модулей кэшируются после первого раза они загружены. Это означает, что каждый вызов, требуемый ('foo'), получит точно тот же объект, который был возвращен, если он разрешит тот же файл .
И я также знаю, если мне нужно перезагрузить его, я могу сделать так:
// first time load
var foo = require('./foo');
foo.bar()
...
// in case need to reload
delete require.cache[require;.resolve('./foo')]
foo = require('./foo')
foo.bar();
Но мне интересно, есть ли встроенная поддержка в Node.js, что он наблюдает за файл и загрузить его, если есть какие-то изменения. Или мне нужно сделать это самостоятельно?
псевдо-код, как
// during reload
if (timestamp for last loaded < file modified time)
reload the file as above and return
else
return cached required file
P.S. Я знаю супервизора и nodemon и не хочу перезапускать сервер для перезагрузки некоторых определенных модулей.
Действительно ли вы загружаете модули? Если нет, вы всегда можете использовать 'fs.watch()'. http://nodejs.org/api/fs.html#fs_fs_watch_filename_options_listener Если вы загружаете модули, вы, похоже, используете край. Вам действительно нужны непоследовательные части кода в вашем приложении? Вы всегда можете 'eval()', но я думаю, что вы делаете сейчас лучше. – Brad
@Brad да, я действительно хочу эту функцию перезагрузки. так как некоторые файлы могут быть изменены. И мне нужно сделать их активными вовремя. да, eval - это вариант, но не подходит, как требуется. –