路线内:
router.get('/', function(req, res, next) {
var module = require('module');
module.doathing();
});
路线之外:
var module = require('module');
router.get('/', function(req, res, next) {
module.doathing();
});
在外部执行此操作是否会导致每次加载页面时都会加载模块,无论路由如何?
最佳答案
require()
函数使用同步 I/O 来加载模块。因此,第一次加载模块时,它将使用一些同步 I/O(之后模块将被缓存,因此不必一遍又一遍地加载)。从请求处理程序中使用同步 I/O 通常是不好的,因为这会损害单线程 Node.js 事件驱动系统的可扩展性。
因此,一般来说,您不应在事件处理程序中使用 require()
。通常,只有当同步 I/O 不会损害服务器的可扩展性时,才应在服务器初始化时使用它。
In express is there a performance difference between requiring a module within a route versus outside?
是的,有区别 - 请参阅上面的解释。您应该在服务器初始化时执行 require()
,而不是在路由的运行时执行。
关于node.js - 在 Express 中,需要路由内的模块与路由外的模块之间是否存在性能差异?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49945388/