我對node.js完全陌生。我有兩個我想運行的node.js腳本。我知道我可以單獨運行它們,但是我想創建一個運行這兩個腳本的node.js腳本。主節點的代碼應該是什麼?如何從主node.js腳本運行多個node.js腳本?
回答
所有你需要做的是使用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;
和
//module2.js
var colors = require('colors');
function module2() {
console.log('module2 started doing its job!'.blue);
setTimeout(function() {
setInterval(function() {
console.log(('module2 timer:' + new Date().getTime()).blue);
}, 2000);
}, 1000);
}
module.exports = module2;
代碼中的setTimeout
和setInterval
僅用於向您說明兩者同時工作。第一個模塊被調用後,每2秒開始在控制檯中記錄一些內容,另一個模塊首先等待一秒鐘,然後每2秒開始一次。
我也使用npm colors package來允許每個模塊使用其特定顏色打印其輸出(以便能夠在命令中首先運行npm install colors
)。在此示例中,module1
打印red
日誌,module2
打印其blue
中的日誌。所有這些僅僅是爲了向你展示如何在JavaScript和Node.js
中輕鬆實現併發性。
在運行結束從主Node.js
腳本,它在這裏被命名爲index.js
這兩個模塊,你可以很容易做到:
//index.js
var module1 = require('./module1'),
module2 = require('./module2');
module1();
module2();
並執行它想:
node ./index.js
然後你將具有如下輸出:
如果一個模塊塊然後全部阻塞? – Hacketo 2014-12-19 10:34:28
@Hacketo快速回答是肯定的。但關鍵是NodeJS不提供多線程解決方案,而NodeJS和JavaScript中的主要併發模型基於[Event Loop](https://developer.mozilla.org/en-US/docs/Web/的JavaScript /指南/事件循環)。 setTimeout和setInterval都使用這個事件循環功能來防止我們阻塞IO。更具體地說,您可以使用Web Workers來實現類似於多線程方法的解決方案,但工作人員仍然都來自單個Node進程。 – 2014-12-19 11:03:57
@Hacketo在JavaScript和NodeJS領域有許多衆所周知的做法,這些做法被認爲是不好的,以防止我們在IO上被阻塞。在NodeJS世界中,着名的同步fs.readFile就是其中之一,並且在瀏覽器中同步XHR請求是阻止整個線程的另一個壞習慣。 – 2014-12-19 11:06:48
您可以使用child_process.spawn
來啓動每個node.js腳本。或者,child_process.fork
也可能適合您的需要。
- 1. Node.js運行腳本
- 2. Node.js連貫運行腳本
- 3. 如何在node.js中運行此腳本?
- 4. 如何在node.js上運行.php腳本
- 5. 從Node.js執行Powershell腳本
- 6. 遠程執行node.js腳本
- 7. 刷新node.js腳本!
- 8. 如何讓Forever在啓動時運行Node.js腳本?
- 9. 運行一段時間後如何停止node.js腳本
- 10. Node.js - 如何檢測節點腳本是否正在運行?
- 11. 如何檢測Node.js腳本是否通過shell管道運行?
- 12. 在我的主腳本中調用Node.js主腳本中的主函數
- 13. 從一個Shell腳本運行多個Shell腳本
- 14. CRON Node.js Gmail API腳本
- 15. Node.js Express緊湊腳本
- 16. Node.js腳本不退出
- 17. 從cron運行node.js腳本失敗,手動工作正常
- 18. 從node.js運行Python腳本時出現parseError
- 19. 如何修改python腳本var與node.js?
- 20. 如何從cron運行的Perl腳本中運行shell腳本?
- 21. 運行多個腳本
- 22. 運行多個Btrace腳本
- 23. PowerShell運行多個腳本
- 24. 如何運行多個ruby腳本?
- 25. 執行Node.js的文件中bash腳本
- 26. Node.js下載並執行外部腳本
- 27. 從shell腳本中刪除Node.js程序
- 28. Node.js的腳本不是從crontab中
- 29. 咖啡腳本path.exists從node.js的
- 30. 從scrapy腳本運行多個蜘蛛
您可以將這兩個腳本作爲每個導出一個主函數的模塊。你需要()'它們並且在它們每一個上執行一個主函數。 – jfriend00 2014-12-19 06:48:34