【问题标题】:Requiring same module in multiple files在多个文件中需要相同的模块
【发布时间】:2015-05-04 19:45:03
【问题描述】:

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

除了这个,可以在app.js文件中定义一个全局变量吗?

_ = require('underscore')

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

【问题讨论】:

    标签: javascript node.js express


    【解决方案1】:

    来自 node.js 文档:

    模块在第一次加载后被缓存。这表示 (除其他外)每次调用 require('foo') 都会得到 返回完全相同的对象,如果它会解析为相同的 文件。

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

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

    【讨论】:

    • 但是假设模块有内部变量,它可以修改并返回给调用者。所有需要它的模块都会获得相同的内部状态吗?
    猜你喜欢
    • 2017-08-31
    • 2016-06-12
    • 1970-01-01
    • 2021-07-29
    • 2012-02-11
    • 1970-01-01
    • 2014-05-30
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多