gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-02 16:31:05 24 4
gpt4 key购买 nike

我正在使用 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/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com