在节点应用程序中多次初始化快速函数会妨碍其性能

时间:2016-09-05 06:41:50

标签: javascript node.js express

假设我的nodejs app中有2个文件,比如index.js,users.js

index.js的示例代码:

var express = require('express');
var app = express(); 
var winston = require('winston');
....
var signup=require('./apis/users.js');
app.use('/apis/signup',signup);

users.js的示例代码

var express = require('express');
var winston = require('winston');
....

现在我们在app中包括express和winston两次。这样做会妨碍我的应用程序性能。如果我说需要只包含一次winston并在app中使用同一个对象,那么这是正确的方法。在这种情况下,我们应该做什么。

2 个答案:

答案 0 :(得分:0)

  

require在第一次加载后缓存该值。如果你试图获取   再次返回缓存对象。

     

您的回答:它不会影响效果。

其他

  

但是你可以   如果您不想要相同,请从require缓存中删除该值   在第一次加载后再次出现的对象:   node.js require() cache - possible to invalidate?

答案 1 :(得分:0)

节点js以下列方式使用require模块的缓存副本。

  1. 检查Module._cache以获取缓存的模块。

  2. 如果缓存为空,则创建一个新的模块实例。

  3. 将其保存到缓存中。

  4. 使用给定的文件名调用module.load()。   这将在读取文件内容后调用module.compile()。

  5. 如果加载/解析文件时出错,请从缓存中删除错误的模块。

  6. 返回module.exports。

  7. 下面的文章将让您更好地理解模块和require函数的工作原理。 link