是否可以根据时间戳在 node.js 中热重载外部 js 文件?
我知道 node.js 在第一次加载后缓存模块:http : //nodejs.org/docs/latest/api/modules.html#modules_caching
模块在第一次加载后被缓存。这意味着(除其他外)每次调用 require('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();
Run Code Online (Sandbox Code Playgroud)
但我想知道 node.js 中是否有任何原生支持,它会监视文件并在有任何更改时重新加载它。还是我需要自己做?
伪代码如
// during reload
if (timestamp for last loaded < file modified time)
reload the file as above and return
else
return cached required file
Run Code Online (Sandbox Code Playgroud)
PS 我知道主管和 nodemon 并且不想重新启动服务器以重新加载某些特定模块。