2017-09-05 90 views
-1

我有一个server.js看起来像:可以多次请求()同一个文件吗?

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

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

现在我有一个用于在两个app1.js和app2.js.一个common.js

所以在app1.js我:

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

和app2.js我:

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

我想知道如果这是确定要做到这一点。节点在这两种情况下是否使用相同的参考,还是重复?

+0

是的,这很好,他们会是同一个对象(虽然它通常不是最好的设计)。 – Ryan

+0

@Ryan为什么我不应该指望那部分?如果这不是行为,那么大部分互联网都会崩溃。 – 2017-09-05 03:41:10

+0

节点缓存需要,所以它真的没关系你需要多少次 – adeneo

回答

1

,这样做绝对没问题。 require()本质上包括当前页面上的目标页面的内容。如果您需要在多个页面上使用模块,则需要在每个页面上使用require()

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

有关于此的一些伟大的文档在SitePoint

希望这会有所帮助! :)

0

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

相关问题