在快递中,要求路线内的模块与外部之间存在性能差异吗?

时间:2018-04-20 15:46:37

标签: 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();
});

在外面执行此操作是否会在每次加载页面时加载模块,无论路径是什么?

1 个答案:

答案 0 :(得分:3)

require()函数使用同步I / O加载模块。因此,第一次加载模块时,它将使用一些同步I / O(之后模块将被缓存,因此不必反复加载)。从请求处理程序使用同步I / O通常是不好的,因为这会损害单线程node.js事件驱动系统的可伸缩性。

因此,通常,您不应在事件处理程序中使用require()。通常,只有在同步I / O不会损害服务器的可伸缩性时,才应在服务器初始化时使用它。

  

在快递中,要求路线内的模块与外部模块之间存在性能差异吗?

是的,有区别 - 见上面的解释。您应该在服务器初始化时执行require(),而不是在路由中的运行时。