Javascript Node.js包括js文件和设置变量
我使用Node.js运行后台作业(没有前端)。我认为对我来说,运行worker最好的方法是为每种作业都有一个文件(这样我可以很容易地为每台服务器运行一个worker) main.jsJavascript Node.js包括js文件和设置变量,javascript,node.js,Javascript,Node.js,我使用Node.js运行后台作业(没有前端)。我认为对我来说,运行worker最好的方法是为每种作业都有一个文件(这样我可以很容易地为每台服务器运行一个worker) main.js require('scribe-js')(); // github.com/bluejamesbond/Scribe.js process.console = console; ... require('./lib/main'); console.tag('testing').log('this is a te
require('scribe-js')(); // github.com/bluejamesbond/Scribe.js
process.console = console;
...
require('./lib/main');
console.tag('testing').log('this is a test');
工人*.js
require('scribe-js')(); // github.com/bluejamesbond/Scribe.js
process.console = console;
...
require('./lib/main');
console.tag('testing').log('this is a test');
console
变量未传递给worker.*.js。我想在main.js
中设置它,因为如果变量的值发生变化,我只想改变一次(在main.js中),而不是在每个worker.*.js文件中。有什么想法吗
我认为这不是重复的:我知道有很多“如何在Node.JS中的另一个JS文件中包含一个JS文件”,答案通常是“使用
var s=require('yourfile');
”。我认为这个问题有点不同。要在节点模块之间共享变量,您可以:
var savedArgs;
module.exports = function(args) {
savedArgs = args;
}
然后,当加载worker_1.js时,您将执行以下操作:
var args = {console: process.console};
require('./worker_1.js')(args);
模块的设计应尽可能独立(例如,不依赖全局状态),以鼓励模块化和可重用性。他们应该
require()。知道任何迷你框架吗?问题是,对于我的每个worker.*.js
文件,我都需要编写process.console=globals.customConsole代码>而不是只在我的main.js
文件中保存一次。我正试图找出一个解决方案,所以我只定义了一次,它对所有包括main.js
的工作人员都可用。编辑:奇怪,其中一条评论消失了。我把我的评论变成了答案。这就是我删除评论的原因。啊,好吧,我来检查答案。第二个代码块是main.js?因此,在main.js中包含worker_1.js而不是相反?@iDev247-我没有了解您是如何使用worker_1.js的。我以为你是从一个中心模块加载工人,所以我就是这样编码的,但是你可以用另一种方式来做。您可以将共享模块加载到worker中,然后通过调用导出的方法来查询它的单例数据。数据可以被拉取(您调用其他人的导出方法来获取数据)或推送(有人调用您的构造函数并提供数据),这取决于您的结构。两种方法都很好,明白了!看起来我仍然需要执行savedArgs.console.log()
而不是console.log()
。是这样吗?我真的很想找到一个解决方案,在这里我可以只做console.log()
,这样它对所有调试都是一个通用的更改。同意@iDev247,将您的控制台包装到某个方法或变量,并在main.js中使用module.exports看起来可能没有一种方法可以全局定义console
。我可能会做什么(这并不是我真正想要做的):require('./lib/main')(函数(console){…worker code…})
在main.js中,我将返回console作为参数。