Node.js REPL 教程

Node.js REPL (Read-Eval-Print Loop) 是一个交互式环境,允许你直接输入和执行 JavaScript 代码,无需创建文件。它是学习 Node.js、测试代码片段和调试的强大工具。

启动 REPL

有几种方式可以启动 Node.js REPL:

  1. 直接运行 node 命令

    bash 复制代码
    node
  2. 在特定文件目录下启动(如果需要访问当前目录的模块):

    bash 复制代码
    node
  3. 使用环境变量(如设置特殊选项):

    bash 复制代码
    NODE_REPL_HISTORY_SIZE=0 node  # 禁用历史记录

REPL 基本用法

启动 REPL 后,你会看到类似这样的提示符:

复制代码
> 

执行简单表达式

javascript 复制代码
> 1 + 2
3
> 'Hello'.toUpperCase()
'HELLO'
> const x = 10;
undefined
> x * 2
20

多行输入

对于需要多行的代码(如函数定义),REPL 会自动进入多行模式(提示符变为 ...):

javascript 复制代码
> function add(a, b) {
...   return a + b;
... }
undefined
> add(2, 3)
5

REPL 特殊命令

REPL 提供了一些特殊命令,以点 (.) 开头:

  • .help - 显示帮助信息
  • .exitCtrl+D - 退出 REPL
  • .clear - 重置 REPL 上下文(清除所有变量)
  • .save filename - 将当前会话保存到文件
  • .load filename - 加载文件到当前会话
  • .editor - 进入编辑器模式(输入多行代码更方便)

示例:

javascript 复制代码
> .help
.break    Sometimes you get stuck, this gets you out
.clear    Alias for .break
.editor   Enter editor mode
.exit     Exit the repl
.help     Print this help message
.load     Load JS from a file into the REPL session
.save     Save all evaluated commands in this REPL session to a file
...

> .save mycode.js
Session saved to mycode.js

自定义 REPL

你可以通过编程方式创建自定义 REPL:

javascript 复制代码
const repl = require('repl');

// 基本 REPL
repl.start();

// 更复杂的自定义 REPL
const replServer = repl.start({
  prompt: 'MyApp> ',
  eval: (cmd, context, filename, callback) => {
    // 自定义评估逻辑
    callback(null, `Result: ${cmd}`);
  }
});

// 添加全局变量
replServer.context.myVar = 'Hello';

REPL 高级特性

自动补全

Tab 键可以自动补全变量、函数名和属性。

下划线变量

REPL 使用 _ 变量存储上一个表达式的结果:

javascript 复制代码
> 2 + 2
4
> _ * 3
12

错误处理

REPL 会捕获并显示错误,但不会终止会话:

javascript 复制代码
> undefinedFunction()
ReferenceError: undefinedFunction is not defined
    at repl:1:1
    at ContextifyScript.Script.runInThisContext (vm.js:50:33)
    at REPLServer.defaultEval (repl.js:240:29)
    ...
> // 仍然可以继续输入

使用模块

你可以在 REPL 中直接 require 模块:

javascript 复制代码
> const fs = require('fs');
undefined
> fs.readFileSync('package.json', 'utf8')
'{"name":"myapp","version":"1.0.0",...}'

实际应用场景

  1. 快速测试代码片段

    javascript 复制代码
    > new Date().toISOString()
    '2023-05-20T12:34:56.789Z'
  2. 调试

    javascript 复制代码
    > const obj = {a: 1, b: 2};
    undefined
    > Object.keys(obj)
    [ 'a', 'b' ]
  3. 学习 API

    javascript 复制代码
    > const crypto = require('crypto');
    undefined
    > crypto.createHash('sha256').update('hello').digest('hex')
    '2cf24dba5fb0a30e26e83b2ac5b9e29e1b161e5c1fa7425e73043362938b9824'
  4. 原型开发

    javascript 复制代码
    > class Person {

... constructor(name) {

... this.name = name;

... }

... greet() {

... return Hello, ${this.name};

... }

... }

undefined

const p = new Person('Alice');

undefined

p.greet()

'Hello, Alice'

复制代码
## 退出 REPL

有几种方式退出 REPL:
- 输入 `.exit`
- 按 `Ctrl+D` (Unix) 或 `Ctrl+Z` (Windows)
- 输入 `process.exit()`

## 总结

Node.js REPL 是一个强大的工具,适合:
- 快速测试 JavaScript/Node.js 代码
- 学习新的 API 或模块
- 调试小段代码
- 原型开发

通过熟练掌握 REPL,你可以显著提高 Node.js 开发效率。
相关推荐
008爬虫实战录5 小时前
【码上爬】 题十二:如来神掌 困难, JSVMP加密,使用代理补环境
前端·javascript·node.js
小e说说6 小时前
主流活动策划工具特点比较
编辑器
winlife_7 小时前
把 Godot 编辑器接入 AI:Funplay MCP for Godot 介绍
人工智能·编辑器·godot·ai编程·游戏开发·mcp
008爬虫实战录9 小时前
【码上爬】 题九:webpack调试 堆栈分析
前端·webpack·node.js
xiaoxue..10 小时前
Node.js 笔试题讲解
后端·面试·node.js
小小前端仔LC11 小时前
Node.js + LangChain +React:搭建个人知识库(四)- 把向量和文件切块存入mysql中
后端·node.js
海上彼尚11 小时前
Nodejs也能写Agent - 7.基础篇 - MCP
前端·javascript·人工智能·node.js
@noNo11 小时前
Visual Studio Code添加自定义大模型API
ide·vscode·编辑器
winlife_12 小时前
把 Cocos Creator 编辑器接入 AI:Funplay MCP for Cocos 介绍
人工智能·编辑器·ai编程·cocos creator·游戏开发·claude·mcp
海兰12 小时前
【实用程序】图片处理服务,前端应用 (Vue 3 + Pinia + Vite)后端服务 (Node.js + Express + Sharp)
前端·javascript·vue.js·node.js·pinia