我继承了一个快速申请。在应用程序中,我们向http://www.activiti.org/userguide/#bpmnCallActivity传递了大量的局部变量。对于每个页面,我们传递大约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 #<Object> has no method 'concat'
),同样适用于extend
和push
。
是否没有方法来扩展或合并两个对象?我需要自己动手吗?
此外,这是使数组全局化的最佳方法吗?我更喜欢将其称为locals
,而不是local.locals
,因为这只是麻烦。
答案 0 :(得分:2)
除了来自@mostruash的this graph之外,还有两个非常相似的JS库,它们都提供了对象合并功能(以及许多很好的帮助程序实用程序)。选择一个:
编辑:至于关于local.locals
的第二个问题......当然,只需导出对象本身,而不是包装它的对象:
module.exports = locals;
......并在您的路线中:
var locals = require('../locals');
console.log(locals.indexName);