在多个文件中需要相同的模块

Elm*_*lmo 10 javascript code-structure code-design node.js express

我在我的项目中使用Underscore.js.几乎所有文件都有这行代码:var _ = require('underscore').该require函数是同步的,因此每次使用时都会加载相同的文件.这是正确的做法吗?这不会影响性能吗?

而不是这样,可以在app.js文件中定义一个全局变量吗?

_ = require('underscore')
Run Code Online (Sandbox Code Playgroud)

我已经读过你不应该使用全局变量,但这似乎是一个有效的用例.

For*_*ord 25

从node.js文档:

模块在第一次加载后进行缓存.这意味着(除其他外)每次调用require('foo')将获得完全相同的返回对象,如果它将解析为同一个文件.

多次调用require('foo')可能不会导致模块代码多次执行.这是一个重要的特征.有了它,就可以返回"部分完成"的对象,从而允许加载传递依赖,即使它们会导致循环.

因此,多次调用require underscore不会影响性能,因为它将加载模块的缓存版本.
资料来源:https://nodejs.org/api/modules.html

  • 该死的,我想我应该RTFM.谢谢! (4认同)