Javascript 在服务器端合并两个json对象

Javascript 在服务器端合并两个json对象,javascript,json,Javascript,Json,我继承了一个express应用程序。在应用程序中,我们传递给大量的局部变量列表。对于每一页,我们传递大约30个不变的变量。如果一个人真的改变了,他需要在十几个地方改变。这显然很糟糕 因此,我要做的是存储本地值,这些值不会与真正的本地值分开更改。因此,我将这些不变的值放在它们自己的文件中,并在每个路由的开始处加载该文件,如下所示: 'use strict'; var locals = { indexName: 'Home', ...lots more of these... };

我继承了一个express应用程序。在应用程序中,我们传递给大量的局部变量列表。对于每一页,我们传递大约30个不变的变量。如果一个人真的改变了,他需要在十几个地方改变。这显然很糟糕

因此,我要做的是存储本地值,这些值不会与真正的本地值分开更改。因此,我将这些不变的值放在它们自己的文件中,并在每个路由的开始处加载该文件,如下所示:

'use strict';
var locals = 
{
    indexName: 'Home',
    ...lots more of these...
};
module.exports = { locals : locals };


// in each route files
var local = require('../locals.js');
我可以通过res.render('sensor',local.locals)使用它

但是,我还需要添加特定于页面的值。所以我试着
local.locals+{…}不显示错误,但不显示原始值

然后,我尝试了
local.locals.concat({…})
,但这确实给出了一个错误(
TypeError:Object#没有方法“concat”
),同样适用于
extend
push

是否没有扩展或合并两个对象的方法?我需要自己滚吗

另外,这是使阵列全局化的最佳方法吗?我更愿意称它为
局部
,而不是
局部。局部
,因为这太麻烦了。

除了@mostrush之外,还有两个非常相似的JS库,它们都提供了对象合并功能(以及许多很好的帮助工具)。选择一个:

编辑:至于关于
local.locals
…的第二个问题,当然,只需导出对象本身,而不是包装它的对象:

module.exports = locals;
…在您的路线中:

var locals = require('../locals');
console.log(locals.indexName);

请注意,使用lodash可能是一个更好的主意。来源:最后使用了lodash
assign
。我得到了
TypeError:Object#也没有方法'assign'
。在查看了
对象.assign
文档后,我更改了参数,现在我得到了
TypeError:Object函数Object(){[本机代码]}没有方法'assign'
。我来看看lodash。
Object.assign
是一个静态成员函数,但您试图将其用作实例成员函数。我不明白你为什么不正确地搜索它。如果你有C++背景,这不是火箭科学。