在 Node js 中使用 'require' 以获得更好的性能

Using 'require' inside Node js to gain better performance

我在我的控制器中使用了很多依赖项。使用类似下面的方法来稍微提高性能是否是一个好建议:(即控制器的延迟加载)

app.use(route.get('/test', function(){
    c = require('./testcontroller')
    c.method();
}) );
app.use(route.get('/test2', function(){
    c2 = require('./testcontroller2')
    c2.method();
}) );

而非常用方法:

c = require('./testcontroller')
c2 = require('./testcontroller2')
//all other controllers

app.use(route.get('/test', c.method) 
app.use(route.get('/test2', c2.method)

在我看来,传统方式更好 - 你可能需要冗余的东西(可能不需要,因为最终会使用任何控制器),但另一方面 - 当应用程序重新启动时将需要它。

在我看来 运行 时间内的性能比快速加载更重要,在您的第一个建议中您需要 运行 时间内。

在路由处理程序或中间件处理程序中使用 require() 不是一个好主意。那是因为 require() 使用同步 I/O 而你不想在任何路由处理程序中使用同步 I/O。

不太坏的消息是 require() 缓存了结果,所以它只会在第一次命中路由时命中,但大多数服务器设计者宁愿命中时间稍长一点在服务器启动时并且根本不在任何路由处理程序或中间件中使用同步 I/O。

所以,通用方法是通用方法和模块通常在服务器启动时加载是有原因的。据推测,这是一个很长的 运行ning 服务器进程,所以你并没有真正通过不加载模块来在很长的 运行 中保存任何东西。如果有人用过它,它迟早会被加载。