在 Node 应用程序中,通常会开始加载如下所示的一些模块:
var express = require('express')
, app = express()
, mongodb = require('mongodb')
, http = require('http');
现在,假设您有一个如下所示的 paths.js 文件:
module.exports = function(app) {
app.get('/', function(req, res) {
res.render('homepage');
});
// other routes
};
因此,当您调用该routes.js 文件时,您将传递应用程序变量:
require('./routes')(app);
我的问题是:那里发生了什么?将app变量传递给routes模块时是否有资源消耗?我知道 node.js 缓存模块,但我想知道这如何影响它们之间传递的变量,并且我想知道以下方法是否有效:
让我们开始加载一些模块,但是让我们以不同的方式进行:
var _ = {};
_.express = require('express');
_.app = _.express();
_.mongodb = require('mongodb');
_.http = require('http');
路由.js:
module.exports = function(_) {
_.app.get('/', function(req, res) {
res.render('homepage');
});
// other routes
};
调用routes.js:
require('./routes')(_);
显然 _ 变量将是一个很大的变量,但它将包含您在任何模块中可能需要的任何内容。所以我想知道传递的变量的大小是否会影响性能,在这种情况下,传递超出需要的数据将是愚蠢的。
我寻求在我的应用程序中实现最佳的可实现性能,同时尝试在编写代码时简化事情,因此任何可能对此有所帮助的建议,或者任何关于在 Node.js 中如何在幕后工作的解释都将受到赞赏.
提前致谢。
最佳答案
参见here .
tl;dr:对象是通过引用传递的,而不是通过值传递的。因此,当您将同一个对象多次传递给多个模块时,您并不会增加内存消耗。
关于javascript - 通过不同的 Node.js 模块/文件传递变量时实现最佳性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32374089/