javascript - 通过不同的 Node.js 模块/文件传递变量时实现最佳性能

标签 javascript node.js performance

在 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/

相关文章:

javascript - Google Maps API 按纬度/经度删除标记

javascript - 将 ajax 转换为 Node.js

javascript - JSON.stringify 中的注释字段被忽略

ruby-on-rails - Ruby 1.8.7 对比 Ruby 1.9+ 性能

performance - Case 与 If Else If : Which is more efficient?

c++ - 如何加速非顺序数组填充?

javascript - D3.js 中的脚本使 Chrome 崩溃

javascript - 将指定排序条件的对象数组排序为字符串

javascript - 正则表达式 : substring not followed by character

javascript - 使用 azure 发布时无法 GET/Node.js