代码之家  ›  专栏  ›  技术社区  ›  stackers bsyk

在express中,要求在路线内安装模块与要求在路线外安装模块之间是否存在性能差异?

  •  1
  • stackers bsyk  · 技术社区  · 7 年前

    路线内:

    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 回复  |  直到 7 年前
        1
  •  3
  •   jfriend00    7 年前

    这个 require() 函数使用同步输入/输出加载模块。因此,第一次加载模块时,它将使用一些同步I/O(之后将缓存模块,以便不必反复加载)。使用来自请求处理程序的同步I/O通常是不好的,因为这会影响单线程节点的可伸缩性。js事件驱动系统。

    所以,总的来说, 您不应该使用 要求() 事件处理程序内部 。通常仅当同步I/O不会影响服务器的可扩展性时,才应在服务器初始化时使用它。

    在express中,要求在路线内安装模块与要求在路线外安装模块之间是否存在性能差异?

    是的,有一个区别-见以上解释。你应该 要求() 在服务器初始化时,而不是在路由的运行时。