使用 Node.js 编写 Shell 脚本
您可以购买本书的离线版本(HTML、PDF、EPUB、MOBI),并支持免费在线版本。
(广告,请不要屏蔽。)

3 Node.js 入门



本章介绍 Node.js 的第一步。

3.1 获取 Node.js 帮助

3.2 安装 Node.js 和 npm

Node.js 的安装程序还会安装包管理器 npm。它可以从 Node.js 主页 下载,并且适用于许多操作系统。

3.3 运行 Node.js 代码

3.3.1 在 Node.js REPL 中评估代码

Node.js REPL(读取-评估-打印循环)是一个命令行,我们可以在其中交互式地评估 Node.js 代码。

我们可以在 JavaScript 严格模式(更安全,并且默认情况下为 ESM 模块中的代码启用)下启动 Node.js REPL

node --use_strict

如果我们在没有任何参数的情况下运行 node,则 Node.js REPL 不会使用严格模式

node

这就是使用 Node.js REPL 的样子(% 是 Unix shell 提示符,> 是 Node.js REPL 提示符)

% node
Welcome to Node.js v18.9.0.
Type ".help" for more information.
> path.join('dir', 'sub', 'file.txt')
'dir/sub/file.txt'
>

Node 的所有内置模块都可以通过 REPL 中的全局变量访问:assertpathfsutil 等。

3.3.2 快速打印 JavaScript 表达式的结果

我们可以使用带有选项 --print(缩写:-p)的 shell 命令 node 来打印评估 JavaScript 表达式的结果。与 REPL 类似,所有内置模块都可以通过全局变量访问。例如,以下命令打印主目录的路径,并且适用于 Unix 和 Windows

node -p "os.homedir()"

有关此命令行选项的更多信息,请参阅 §15.7.7 “node --evalnode --print

3.3.3 使用 Node.js 代码运行模块

以以下模块为例

// my-module.mjs
import * as os from 'node:os';
console.log(os.userInfo());

我们可以通过以下方式从 shell 运行它

node my-module.mjs

3.3.4 运行剪贴板中的 Node.js 代码

我们还可以运行已复制到剪贴板的 Node.js 代码。例如,我们可以从上一节复制 my-module.mjs 的代码,并在 macOS 上像这样运行它

pbpaste | node --input-type=module

选项 --input-type=module 告诉 Node.js 将从标准输入接收的代码解释为模块。除其他外,这使我们能够使用 import

macOS shell 命令 pbpaste 将剪贴板的内容发送到标准输出。其他操作系统具有类似的 shell 命令