节点.js包括JS文件和设置变量
Node.js include JS file and set variables
我正在使用Node.js来运行后台作业(没有前端)。我认为对我来说,运行 worker 的最佳方法是为每种作业提供一个文件(例如,我可以轻松地为每个服务器运行一个 worker )。
主.js
require('scribe-js')(); // github.com/bluejamesbond/Scribe.js
process.console = console;
...
worker_*.js
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');
"。我认为这个问题有点不同。
要在节点模块之间共享变量,您可以:
- 导出模块的方法,然后调用该方法并向其传递要共享的变量或
- 您可以将变量设置为全局变量。
首选方法是通过导出的方法显式共享变量,然后让模块存储自己的变量副本。 有关全局变量的信息,请参阅此处。
在您的情况下,为每个工作线程支持一个通用构造函数并向工作线程传递一个对象可能很有意义,您可以在其上放置属性以将相同的变量共享给每个工作线程。
所以,你会这样:
worker_1.js
var savedArgs;
module.exports = function(args) {
savedArgs = args;
}
然后,当加载worker_1.js时,您将执行以下操作:
var args = {console: process.console};
require('./worker_1.js')(args);
模块的设计应尽可能自包含(例如,不依赖于全局状态),以鼓励模块化和可重用性。 他们应该require()
他们需要的内容,并且他们完成由其他模块创建的工作所需的任何应用配置或单例都应在其构造函数中或通过其他导出方法提供给他们。
相关文章:
- 如何在定义js文件后为外部javascript文件设置变量
- 在 Jquery/Javascript 中使用多个 OR (||) 运算符时如何设置变量
- 在值内设置变量
- 在javascript函数中设置变量
- 设置变量时破坏游戏代码
- 未设置变量的赋值| jQuery的作用是什么
- 在可编辑行内设置变量
- 在不中断形式帖子的情况下在角度中设置变量
- MongoDB MonkAPI根据数据库请求之外可用的查找结果设置变量
- text方法中的javascript设置变量
- 如何为JavaScript函数设置变量以嵌入视频
- 使用jQuery和PHP加载区域设置变量
- 包括外部JS文件和设置变量
- 在jQuery File upload插件中设置变量上传路径
- 设置变量函数不起作用
- Session.get未在Meteor.js中设置变量
- 为cytoscape.js mapData设置变量限制
- 如何在脚本标记中设置变量
- 使用控制器在conditional.js.erb文件中设置变量
- 如何从控制台动态设置变量