node.js - 在 Express 中,需要路由内的模块与路由外的模块之间是否存在性能差异?

标签 node.js express

路线内:

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/

相关文章:

javascript - 为什么将数据加载到 Meteor Collection 中需要这么长时间?

javascript - 我们如何使用生成器以同步方式编写异步代码?

node.js - RangeError [ERR_OUT_OF_RANGE] : The value of "value" is out of range. 它必须 >= 0 且 <= 4294967295。已收到 9433906525

Javascript 无法使用 fetch 捕获错误

mysql - 在 for 循环中将数据发送到express.js

javascript - 类型错误 : Cannot set property 'auto' of null

node.js - 如何使用expressJS创建nodeJS模块

node.js - 在 Node js 中缓存的更好方法

javascript - 如何使用 Node.js 和 Express 从 URL 获取值?

node.js - 为什么 TypeScript 找不到名称 'Express' ?