我想使用来自特定路径的数据,因此其他自定义模块可以使用此数据,并在需要时进行更改,但是整个数据只能在一个地方使用。我对此几乎没有问题。
首先,我在 route1.js上的router.post中获取数据:
var express = require('express');
var app = express();
var router = express.Router();
var module1 = require('../module`enter code here`s/module1.js'); // custom module for tests purposes only
router.post('/data',function(req,res){
var data = req.body.form_input;
// let suppose I manage some additional work with data and finally get this globals object with all necessary data:
var globals = {
a : 'A',b : 'B',c : 'C'
};
/* module1('Our message from ROUTE1 - processed by MODULE1'); */
});
module.exports = {
router : router,globals : globals
};
问题是如何在route中使用globals对象,以便其他模块可以使用它?如您所见,globalS对象不是真正的全局对象,它在router.post函数的范围内。
module1.js 代码:
var mod1 = require ('../routes/route1.js'); // cause we need globals object with all the data in it - but how to get it?
// this is just simple function presentation to better describe the problem
var logger = function(msg)
{
console.log(msg);
}
module.exports = logger;
现在,当我们在route1.js中放置以下代码时-撤消/ * * /中的注释:
module1('Our message from ROUTE1 - processed by MODULE1');
我们可以看到一条消息-模块可见并且可以正常工作。但是我不能编辑全局对象。
现在,除了所有这些代码之外,另一个问题是模块应该使用哪种设置?我应该使用node.js版本,ES6版本(* .mjs --experimental-modules)还是仅使用babel / webpack编译所有内容?将来的正确模式是执行“模块”操作的哪个版本?