我对 Node.js 相当陌生,并且无法理解在运行时加载库或文件的方式。显然,使用 Node.js 的原生“require”函数在运行时加载文件是个坏主意,因为它会阻塞 i/o,因此不应在请求处理程序中使用。所以,我假设要避免这样的事情:
var http = require('http').createServer(function(req, res) {
var file = require('./pages/'+req.url);
res.end();
}).listen(8080);
那么有没有办法在运行时以非阻塞/异步方式要求文件?
我不认为总是可以在“启动时间”而不是运行时加载文件,因为就像上面的示例一样,知道要加载/需要什么文件的唯一方法是通过req.url
属性获取名称。
所以这似乎是唯一的选择。除非,文件夹中的所有文件都被预加载,然后在回调中按名称调用(通过使用fs.readdirSync
或其他方法遍历文件夹中的所有文件并将获取的文件的名称与req.url
属性进行比较),但这似乎很浪费. “预加载”文件夹中的所有文件(可能大约 50 个文件)然后只使用其中的 1 个,这似乎不是一个好主意。我错了吗?
无论哪种方式,我都想知道是否有一种方法可以在运行时以更好的非阻塞/异步方式要求文件。
谢谢!