Node.js 如何运行外部进程
Node.js 是一个跨平台的开源后端JavaScript运行时环境,它使用V8引擎在网页浏览器之外执行JavaScript代码。Node.js允许开发者利用JavaScript创建命令行工具和服务器端脚本,这涉及在将页面发送到用户浏览器之前在服务器上运行脚本。
在本文中,我们将讨论如何在Node.js中运行外部进程。
child_process模块为我们提供了在Node.js中运行外部进程的能力。借助child process模块,我们可以将任何系统命令作为“子进程”来访问操作系统功能。该模块为我们提供了四种创建子进程的方法:
- spawn
- fork
- exec
- execFile
现在让我们看看如何使用这些方法来运行外部进程:
注意: 在运行文件之前,请确保在package.json文件中设置 “type”: “module” 以使用import语法。
1. 使用spawn方法: 使用提供的命令和args中的命令行参数,spawn()函数会创建一个新的子进程。
语法:
示例: 现在让我们看看如何使用spawn()方法来运行外部进程。在下面的示例中,我使用spawn()方法来列出当前工作目录中的所有文件和子目录。
index.js
运行应用程序的步骤: 在终端中输入以下命令来运行应用程序:
输出:
2. 使用fork方法: fork()方法是spawn()方法的特殊情况,允许父进程和子进程使用send()方法进行通信。它允许将计算密集型的任务与主事件循环分离开来。
语法:
示例: 现在让我们看一下如何使用fork()方法来运行外部进程。我在这里创建了两个独立的进程,parentFile.js和childFile.js,并通过使用fork()方法在它们之间进行通信。
parentFile.js
- childFile.js
运行该应用的步骤: 在终端中输入以下命令以运行该应用:
输出:
3. 使用exec方法: 在运行命令之前,exec函数首先建立一个shell。
语法:
示例: 现在让我们看一下如何使用exec()方法来运行外部进程。在以下代码中,我只是运行一个echo命令。
index.js
运行该应用的步骤: 在终端中输入以下命令来运行该应用:
输出结果:
4. 使用execFile方法: execFile()方法默认不会创建shell,这使得它比exec()方法更高效。
语法:
示例: 现在我们来看一下如何使用execFile()方法来运行外部进程。在下面的例子中,我使用execFile()方法在一个node.js文件中运行一个python文件。我已经在与node.js文件相同的目录中创建了python文件。项目结构应该如下所示:
hello.py
index.js
运行应用程序的步骤: 在终端中写入以下命令以运行应用程序:
输出: