javascript - Node.js包含JS文件并设置变量

标签 javascript node.js

我正在使用 Node.js 运行后台作业(无前端)。我认为运行工作程序的最佳方法是为每种作业创建一个文件(这样我可以轻松地在每台服务器上运行一个工作程序)。

ma​​in.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 文件”和答案通常是“use var s = require('yourfile');”。我认为这个问题有点不同。

最佳答案

要在 Node 模块之间共享变量,您可以:

  1. 导出模块的方法,然后调用该方法并向其传递您要共享的变量或
  2. 您可以将该变量设置为全局变量。

首选方法是通过导出方法显式共享变量,然后让模块存储自己的变量副本。请参阅here有关全局变量的信息。

就您而言,为每个工作人员支持通用构造函数并向工作人员传递一个对象,您可以在该对象上添加属性以与每个工作人员共享相同的变量,这可能很有意义。

所以,你会这样:

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() ,并且他们需要的任何应用程序配置或单例,以便完成由其他模块创建的工作,应该在他们的构造函数中或通过其他导出来提供给他们方法。

关于javascript - Node.js包含JS文件并设置变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28291089/

相关文章:

javascript - 函数返回空数组

javascript - 将模板中的元素重置为默认值的最佳方法

node.js - 如何让 Node.js 应用程序在关闭套接字后继续监听?

node.js - 这两条路线在nodejs中是否相同?

javascript - 在 Node JS 中使用 multer 上传图像和文本

node.js - kadirahq/mup 验证部署失败

javascript - 如何创建多个标签介绍 Canvas

javascript - 将元素从附加列表传递到另一个页面

javascript - 面试编码时如何在短时间内用javascript实现一个队列?

javascript - puppeteer 中发布请求的意外结果