JavaScript 标准参考教程:Node.js REPL 交互式环境与 repl 模块实战指南
教程文档【免费下载链接】jstutorialJavascript tutorial book项目地址https://gitcode.com/gh_mirrors/js/jstutorial点击查看免费下载本文整理自 jstutorialJavaScript 标准参考教程Node.js 章节的《repl》文档并对照同章节的《Node.js 概述》等资料做了补充。读完本文你将掌握两种 REPL 用法一是直接在命令行运行node进入交互式环境用来快速验证表达式、调试模块二是通过内置的repl模块在自己的 Node 程序内部嵌入一个可交互的 REPL 会话并通过context对象向会话注入自定义变量。所有命令与代码示例均可直接复制运行。REPL 环境是什么REPL 是 Read-Eval-Print Loop 的缩写中文可译为读取-求值-输出循环见 Node.js 概述。REPL 环境是一个互动式的 Node 命令解释环境用户从键盘输入命令环境读取Read后立刻求值Eval再把结果输出Print到屏幕然后回到循环Loop等待下一条输入。$ node 11 2 在 Node.js 概述 一节中这种用法被描述为在命令行键入 node 命令后面没有文件名就进入一个 Node.js 的 REPL 环境。REPL 的典型用途包括快速验证一段 JavaScript 语法或表达式无需新建脚本文件即时调用 Node 内置模块的 API探索其行为在调试阶段与运行中的程序交互。进入与退出 REPL 环境进入 REPL直接执行node命令不带任何脚本文件名就能进入 REPL 环境$ node 大于号就是 REPL 环境的提示符prompt。在这里可以直接输入 JavaScript 代码回车后立刻得到结果$ node 1 1 2 以严格模式进入如果希望 REPL 在严格模式下运行可以使用--use_strict参数参见 Node.js 概述$ node --use_strict退出 REPL退出 REPL 环境有两种方式在行首按下Ctrl D输入点命令.exit。$ node .exit $遍历历史命令REPL 是 Node.js 与用户互动的 shell各种基本的 shell 功能都可以在里面使用比如使用上下方向键遍历曾经使用过的命令参见 Node.js 概述。表达式与语句的区别在 REPL 中输入一个表达式会直接返回结果因为表达式有返回值输入一条语句则没有任何输出因为语句没有返回值。 x 1 1 var x 1 上面代码中第二条命令var x 1没有显示任何结果因为它是一条语句而不是表达式。这是 REPL 新手最容易困惑的一个行为值得记住想在 REPL 里看到结果就输入表达式而不是语句。自动加载内置模块REPL 环境的一个显著特点是自动加载 Node 的所有内置模块。也就是说不需要先执行require()就可以直接使用模块名调用 API。举例来说如果要执行require(os).arch()在 REPL 里可以直接输入os.arch() os.arch() x64这一特性让 REPL 非常适合快速探查 Node 内置模块os、path、fs、http等的接口。当然对于非内置模块或自定义模块仍然需要显式使用require()加载有关require的加载规则可以参阅 CommonJS 规范。另外需要留意的是 REPL 中全局变量的行为在模块文件中var x 1声明的变量是模块私有的不会成为global对象的属性但 REPL 环境的行为与浏览器一致var x 1等同于设置全局属性参见 Node.js 概述。命令历史~/.node_repl_historyREPL 环境执行的所有命令都保存在~/.node_repl_history文件之中。这样退出后重新进入 REPL依然可以通过方向键翻出之前输入过的命令。如果想停止写入历史文件可以将环境变量NODE_REPL_HISTORY设为空字符串$ NODE_REPL_HISTORY node在命令行中环境变量设置在node之前只对本次启动的 REPL 会话生效。对应地Node 还支持NODE_REPL_HISTORY_SIZE环境变量来限制写入历史文件的命令条数防止文件无限增长。_变量上一个表达式的执行结果在 REPL 环境里下划线_是一个特殊变量保存的是上一个表达式的执行结果。 2 3 5 _ 5它还可以继续参与运算 1 1 2 _ 1 3上面的写法_ 1在 Node.js 概述 中也有演示。利用_可以在不重新输入整个表达式的情况下基于上一次的结果做增量计算。点命令dot commands以句点开头的命令称为点命令是 REPL 环境提供的会话级指令用于管理当前会话。.exit.exit命令用于退出 REPL 环境效果与在行首按下Ctrl D相同$ node .exit $.load在 REPL 之中输入.load someFile.js会执行当前目录下的脚本文件常用来预先加载并设置一批常量或工具函数 .load config.js执行后脚本中通过赋值或声明产生的变量即可在本次会话中继续使用适合把常用的配置值、测试数据一次性载入交互环境。其他常用点命令除了文档中介绍的.exit和.loadNode 的 REPL 还提供了一组标准的会话命令在提示符后输入.help可以随时查看完整列表。常见的有命令作用.help显示所有可用的点命令列表.save file把当前会话输入过的命令保存到指定文件.clear重置 REPL 的上下文清空context中注入的自定义变量.editor进入多行编辑器模式方便编写较长的代码块.break终止当前多行输入回到提示符状态repl 模块在程序内提供 REPL 环境repl模块用于在程序内部提供一个 REPL 在线环境。这在很多场景下非常有用例如为服务器程序提供一个运行时管理控制台开发阶段把应用内部状态暴露为可交互调试入口构建 CLI 工具时让用户与程序实时对话。基本用法repl.start()repl模块的核心方法是repl.start()。下面是最简单的用法原文档示例var repl require(repl); function a(i) { var context repl.start(repl ).context; context.pi 3.14; context.arg i; } a(3)运行这段代码后程序会进入一个提示符为repl的 REPL 会话context对象中注入的pi和arg属性都可以在 REPL 环境内直接读取// repl pi // 3.14 // repl arg // 3 // repl代码的关键点有两个repl.start()的返回值是 REPLServer 实例。repl.start(repl )这种写法是把字符串参数直接作为提示符prompt。REPLServer 实例的context属性就是这个 REPL 会话的全局上下文对象。给它添加属性如context.pi 3.14等同于在 REPL 环境里声明全局变量反过来在 REPL 里执行的赋值也会反映到context上。这正是在程序与交互会话之间共享状态的桥梁。repl.start() 的可选参数除了直接传入字符串作为提示符repl.start()更完整的用法是传入一个选项对象repl.start({ prompt: node , // 提示符默认是 input: process.stdin, // 输入流默认是 process.stdin output: process.stdout, // 输出流默认是 process.stdout terminal: true, // 是否为终端会话true 时启用方向键历史、Tab 补全等交互能力 useGlobal: false, // 是否使用 global 对象作为上下文默认 false使用独立的 context ignoreUndefined: false, // 表达式结果为 undefined 时是否仍输出 eval: null, // 自定义求值函数可以接管每条命令的解析与执行 writer: null // 自定义结果格式化函数控制求值结果的输出形式 });其中prompt参数对应原文档repl.start方法还可以通过参数定制提示符的说明。通过input/output参数还可以把 REPL 挂接到任意可读流 / 可写流上例如在 Socket 连接上提供远程调试控制台通过eval参数则可以自定义命令的解释执行逻辑实现语法增强或 DSL。在 REPL 中加载模块repl模块提供的环境与命令行 REPL 一样会预加载 Node 的内置模块因此可以直接使用os.arch()、path.join()这类调用。需要加载自定义模块时在会话中执行require(./my-module)即可加载规则与普通脚本一致参见 CommonJS 规范。小结命令行 REPL直接运行node进入为提示符Ctrl D或.exit退出内置模块自动加载_保存上一个表达式的结果.load可执行脚本文件命令历史持久化在~/.node_repl_history可用NODE_REPL_HISTORY环境变量关闭。repl 模块通过repl.start()在程序内启动 REPL 会话返回的实例的context属性用于向会话注入和读取全局变量是程序与交互环境通信的枢纽。无论是要快速验证一段代码、调试某个模块的行为还是为自己的应用搭建一个运行时交互入口REPL 都是 Node.js 开发中值得熟练掌握的基础工具。与 REPL 相关的更多 Node 基础知识如模块加载、全局对象、--use_strict严格模式可以继续阅读仓库中的 Node.js 概述 与 CommonJS 规范。赞分享教程文档【免费下载链接】jstutorialJavascript tutorial book项目地址https://gitcode.com/gh_mirrors/js/jstutorial点击查看免费下载相关推荐PhoneGap Facebook Plugin 核心 API 详解从登录到 Graph 调用的完整流程PhoneGap Facebook Plugin 核心 API 详解从登录到 Graph 调用的完整流程 PhoneGap Facebook Plugin 是移动开发Porffor REPL实现交互式环境构建Porffor REPL实现交互式环境构建 还在为JavaScript代码调试而烦恼Porffor REPL为你提供即时编译体验让代码测试变得简单高效读编译器语言运行时开发工具EdgeDB REPL 交互式查询环境使用指南EdgeDB REPL 交互式查询环境使用指南 什么是 EdgeDB REPL EdgeDB REPL Read Eval Print Loop 是一个强大的交数据库图数据库关系型数据库上一篇HunterPie为《怪物猎人世界》量身打造的全能游戏助手下一篇如何为Honey Select 2安装完整汉化与去码补丁面向新手的终极解决方案创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

相关新闻

postgres-operator 命令行参数与环境变量完全指南:从启动参数到配置覆盖机制

postgres-operator 命令行参数与环境变量完全指南:从启动参数到配置覆盖机制

云原生后端数据库运维 【免费下载链接】postgres-operator Postgres operator creates and manages PostgreSQL clusters running in Kubernetes 项目地址: https://gitcode.com/gh_mirrors/po/postgres-operator 点击查看 免费下载 本文以 Zalando postgres-opera…

2026/10/13 2:44:34 阅读更多 →
PS5游戏在PC上运行的技术原理与实现路径

PS5游戏在PC上运行的技术原理与实现路径

我无法基于当前输入生成符合要求的博文。原因如下:项目标题“AnyPS5”缺乏明确指向性,未说明是硬件改装、模拟器方案、跨平台兼容层、开发工具链,还是其他技术方向;项目正文为空,无任何功能描述、技术目标或使用场景&a…

2026/10/13 2:44:34 阅读更多 →
侨银股份资金困局:环卫龙头的现金流与大股东减持剖析

侨银股份资金困局:环卫龙头的现金流与大股东减持剖析

先说一个很多人没注意到的矛盾点:侨银股份这家头顶“环卫龙头”光环的公司,最近却频频因为“现金流告急”“大股东减持”登上话题中心。一边是行业地位稳固、合同金额屡创新高的环卫服务巨头,一边是实控人密集套现、账上资金链条绷紧的财务现…

2026/10/13 2:43:34 阅读更多 →

最新新闻

MySQL慢查询定位与索引设计:EXPLAIN与B+树实战全解析

MySQL慢查询定位与索引设计:EXPLAIN与B+树实战全解析

接手线上业务系统这几年,最让我头疼的问题之一就是MySQL慢查询。明明功能开发完了、测试也过了,一到流量高峰期,几个核心接口突然就卡了几秒,数据库CPU飙高,紧接着就是连接数打满、应用报错。排查下来,十有…

2026/10/13 11:00:03 阅读更多 →
ASIO2WASAPI:让普通声卡也能跑低延迟ASIO的桥接实践

ASIO2WASAPI:让普通声卡也能跑低延迟ASIO的桥接实践

简介:ASIO2WASAPI 是面向 Windows Vista 及以上系统的开源音频驱动方案,为音乐制作人与音频工程师提供硬件无关的 ASIO 支持。它借助中间层将 ASIO 协议和 Windows 原生 WASAPI 结合,用独占模式逼近硬件极限延迟,解决无专用音频接…

2026/10/13 11:00:03 阅读更多 →
JumpServer统一纳管PostgreSQL:从资产配置到安全审计的完整实践

JumpServer统一纳管PostgreSQL:从资产配置到安全审计的完整实践

搞了这么多年运维,数据库资产一直是权限管理里最让人头疼的一环。尤其PostgreSQL这种逻辑库多、角色权限细的系统,直接让人连生产库,账号密码满天飞不说,出事了你连谁干的都查不到。前阵子刚把一套PostgreSQL完整接进了JumpServer…

2026/10/13 11:00:03 阅读更多 →
MySQL Workbench 从下载到实战:安装避坑、连接配置与日常管理技巧

MySQL Workbench 从下载到实战:安装避坑、连接配置与日常管理技巧

最早学数据库那会儿,我一直在黑窗口里敲命令。建表、导数据、改权限全靠手打,一条语句写错就得整条回滚,效率低不说,眼睛也是真遭罪。后来换了 MySQL Workbench,整个体验完全不一样:不用背那么多命令&#…

2026/10/13 11:00:03 阅读更多 →
快速搭建规范开源项目:从零构建可协作可维护的GitHub仓库

快速搭建规范开源项目:从零构建可协作可维护的GitHub仓库

1. 为什么“快速搭建规范开源项目”这件事,比你想象中更值得花时间 “快速在GitHub搭建一个规范的开源项目(一)”——这个标题里藏着三个被新手普遍低估的关键词: 快速 、 规范 、 (一) 。不是“建个…

2026/10/13 11:00:03 阅读更多 →
用帕累托图做线上问题优先级排序:从频次统计到加权决策

用帕累托图做线上问题优先级排序:从频次统计到加权决策

作为负责线上稳定性的工程师,我每天到工位后的第一件事,不是看代码,而是先扫一眼昨夜的问题清单。以前团队排故障优先级基本靠嗓门,谁在群里吼得凶就修谁的;直到我们用帕累托图把问题频次和影响摊开做排序,…

2026/10/13 10:58:59 阅读更多 →

日新闻

物联网系统集成避坑指南:从选型到验收的关键要点

物联网系统集成避坑指南:从选型到验收的关键要点

做了这么多年物联网系统集成的项目,我最大的感受是,大部分坑不是出在技术前沿,而是出在一些看起来很平常的地方。设备选了便宜的、协议没问清楚、现场没摸透、验收标准写得含糊——这些细枝末节,最后都会变成延期、超支和扯皮的大…

2026/10/13 0:00:57 阅读更多 →
ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

ESP32舵机控制全攻略:从PWM原理到高级玩法与常见故障排查

如果你玩ESP32有一阵子了,很难不碰到舵机控制这道坎。做智能小车要转方向,做机械臂要抬关节,做云台要偏航俯仰,背后都是同一个东西在干活:舵机。而我见过太多人卡在“代码能编译、舵机就是不听话”这个阶段&#xff0c…

2026/10/13 0:00:57 阅读更多 →
CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

CAN总线原理与STM32实战:抗干扰、仲裁、错误处理全解析

1. 为什么CAN总线至今仍是工业现场的“硬通货”?——从汽车底盘到智能温室的真实需求你有没有拆过一辆老款燃油车的中控台?或者调试过某高校实验室里那台跑着Modbus协议却频频丢帧的PLC控制柜?又或者,在某个农业物联网项目里&…

2026/10/13 0:00:57 阅读更多 →

周新闻

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

流感时间序列预测实战:ARIMA/LSTM全流程拆解与避坑指南

简介:基于 ARIMA、LSTM、Transformer 等模型的流感时间序列预测 Python 源码,面向计算机相关专业课程设计与期末大作业学生,以及项目实战学习者。内容覆盖预处理、平稳性检验、定阶、残差分析、多模型对比预测的完整时序建模流程,…

2026/10/13 2:54:56 阅读更多 →
影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别

影刀RPA新手教程:键盘模拟输入实战——输入文本与模拟按键的区别 做影刀RPA自动化,十个新手有八个栽在"往输入框里填东西"这件事上:要么填不进去,要么填了一半,要么直接把原来内容追加在后面。这背后的根因&…

2026/10/12 0:16:38 阅读更多 →
影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容

影刀RPA新手教程:阅文起点小说数据采集实战——书籍信息与章节内容 1. 认识影刀:什么场景该用RPA采小说数据 起点中文网的页面结构相对稳定——分类榜单、书籍详情、章节内容三块独立页面,跳转链路清晰。这种场景非常适合影刀自动化&#x…

2026/10/13 1:58:08 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 21:05:09 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 14:48:49 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/12 18:11:17 阅读更多 →