Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/466.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何从主node.js脚本运行多个node.js脚本?_Javascript_Jquery_Node.js - Fatal编程技术网

Javascript 如何从主node.js脚本运行多个node.js脚本?

Javascript 如何从主node.js脚本运行多个node.js脚本?,javascript,jquery,node.js,Javascript,Jquery,Node.js,我是node.js的新手。我有两个node.js脚本要运行。我知道我可以单独运行它们,但我想创建一个运行这两个脚本的node.js脚本。主node.js脚本的代码应该是什么?您可以使用子进程。spawn一次启动每个node.js脚本。或者,child\u process.fork也可以满足您的需要 您只需使用node.js模块格式,并导出每个node.js脚本的模块定义,如: //module1.js var colors = require('colors'); function modul

我是node.js的新手。我有两个node.js脚本要运行。我知道我可以单独运行它们,但我想创建一个运行这两个脚本的node.js脚本。主node.js脚本的代码应该是什么?

您可以使用
子进程。spawn
一次启动每个node.js脚本。或者,
child\u process.fork
也可以满足您的需要


您只需使用node.js模块格式,并导出每个node.js脚本的模块定义,如:

//module1.js
var colors = require('colors');

function module1() {
  console.log('module1 started doing its job!'.red);

  setInterval(function () {
    console.log(('module1 timer:' + new Date().getTime()).red);
  }, 2000);
}

module.exports = module1;

代码中的
setTimeout
setInterval
仅用于显示两者同时工作。第一个模块一旦被调用,每2秒钟开始在控制台中记录一些东西,另一个模块先等待一秒钟,然后每2秒钟开始做同样的事情

我还允许每个模块使用其特定的颜色打印其输出(以便能够在命令中首先运行
npm install colors
)。在本例中,
module1
打印
red
日志,
module2
blue
中打印日志。所有这些都只是为了向您展示如何在JavaScript和
Node.js
中轻松实现并发性

最后,要从一个名为
index.js
的主
Node.js
脚本运行这两个模块,您可以轻松地执行以下操作:

//index.js
var module1 = require('./module1'),
  module2 = require('./module2');

module1();
module2();
然后像这样执行它:

node ./index.js
然后您将得到如下输出:


您只需将这两个脚本设置为模块,每个模块输出一个主功能即可。您
require()
将它们放入并在每个模块上执行一个主函数。如果模块阻塞,则所有阻塞?@hacket快速回答为是。但关键是NodeJS不提供多线程解决方案,NodeJS和JavaScript中的主要并发模型基于。setTimeout和setInterval都使用此事件循环功能,只是为了防止阻塞IO。更具体地说,您可以使用Web Workers实现类似于多线程方法的解决方案,但Workers仍然都来自单个节点进程。@Hacketo在JavaScript和NodeJ世界中有许多众所周知的做法,这些做法被认为不利于防止我们阻塞IO。在NodeJS世界中,著名的synchronous fs.readFile就是其中之一,而在浏览器中,synchronous XHR请求是阻止整个线程的另一种糟糕做法。@Hacketo如果对WebWorker解决方案感兴趣,请查看。
node ./index.js