Javascript 可以多次要求()相同的文件吗?

Javascript 可以多次要求()相同的文件吗?,javascript,node.js,Javascript,Node.js,我有一个server.js,看起来像: var app1 = require('./app1.js'); app1.start(); var app2 = require('./app2.js'); app2.start(); 现在我有了一个common.js,它在app1.js和app2.js中都使用 因此,在app1.js中,我有: var common = require('./common.js'); var common = require('./common.js'); 在a

我有一个server.js,看起来像:

var app1 = require('./app1.js');
app1.start();

var app2 = require('./app2.js');
app2.start();
现在我有了一个common.js,它在app1.js和app2.js中都使用

因此,在app1.js中,我有:

var common = require('./common.js');
var common = require('./common.js');
在app2.js中,我有:

var common = require('./common.js');
var common = require('./common.js');

我想知道这样做是否合适。节点是否在这两种情况下使用相同的引用,或者它是重复的?

是的,这样做完全可以
require()
基本上包括当前页面上目标页面的内容。如果需要在多个页面上使用模块,则需要在每个页面上使用
require()

var common=require('./common.js')
将导致变量
common
的结构与
module.exports
中的
common.js
返回的结构完全相同。事实上,它们将是完全相同的对象

上有一些关于这方面的很好的文档


希望这有帮助!:)

没关系。但是,它们确实使用由节点缓存的相同引用。因此,尽量不要通过改变对象属性来改变所需的文件,否则您可能会遇到一些意外行为。

是的,这很好,它们将是同一个对象(尽管依靠最后一部分通常不是好的设计)。@Ryan我为什么不应该依靠这一部分?如果不是这样的行为,那么大部分互联网都会崩溃。节点缓存需要,所以你需要它多少次并不重要。几个小时前的相关答案:@torazaburo:如果你依赖它,那就意味着你依赖于单例/有状态模块,这往往是个坏主意。