Node.js v16.18.1 文档


目录

readline 逐行读取#

中英对照

node:readline 模块提供了用于从可读流(例如 process.stdin)每次一行地读取数据的接口。 可以使用以下方式访问它:



Interface#

中英对照

    readline.Interface 类的实例是使用 readline.createInterface() 方法构造的。 每个实例都与单个 input 可读流和单个 output 可写流相关联。 output 流用于打印到达并从 input 流中读取的用户输入的提示。

    'close' 事件#

    中英对照

    发生以下情况之一时会触发 'close' 事件:

      'line' 事件#

      中英对照

      每当 input 流接收到行尾输入(\n\r\r\n)时,则会触发 'line' 事件。 这通常发生在用户按下 回车返回 时。

      
      

      'history' 事件#

      中英对照

      每当历史数组发生更改时,则会触发 'history' 事件。

      
      

      'pause' 事件#

      中英对照

      发生以下情况之一时会触发 'pause' 事件:

        
        

        'resume' 事件#

        中英对照

        每当 input 流恢复时,则会触发 'resume' 事件。

        
        

        'SIGCONT' 事件#

        中英对照

        当之前使用 Ctrl+Z(即 SIGTSTP)移动到后台的 Node.js 进程然后使用 fg(1p) 返回到前台时,则会触发 'SIGCONT' 事件。

        
        

        'SIGINT' 事件#

        中英对照

        每当 input 流接收到 Ctrl+C 输入(通常称为 SIGINT)时,则会触发 'SIGINT' 事件。 如果在 input 流接收到 SIGINT 时没有注册 'SIGINT' 事件监听器,则将触发 'pause' 事件。

        
        

        'SIGTSTP' 事件#

        中英对照

        input 流接收到 Ctrl+Z 输入(通常称为 SIGTSTP)时,则会触发 'SIGTSTP' 事件。 如果 input 流接收到 SIGTSTP 时没有注册 'SIGTSTP' 事件监听器,则 Node.js 进程将被发送到后台。

        
        

        rl.close()#

        中英对照

        rl.close() 方法关闭 readline.Interface 实例并放弃对 inputoutput 流的控制。 当调用时,将触发 'close' 事件。

        rl.pause()#

        中英对照

        rl.pause() 方法暂停 input 流,允许它稍后在必要时恢复。

        rl.prompt([preserveCursor])#

        中英对照

          rl.prompt() 方法将配置为 promptreadline.Interface 实例写入 output 中的新行,以便为用户提供用于提供输入的新位置。

          rl.question(query[, options], callback)#

          中英对照

            rl.question() 方法通过将 query 写入 output 来显示 query,等待在 input 上提供用户输入,然后调用 callback 函数,将提供的输入作为第一个参数传入。

            
            

            
            

            
            

            rl.resume()#

            中英对照

            如果 input 流已暂停,则 rl.resume() 方法会恢复该流。

            rl.setPrompt(prompt)#

            中英对照

              rl.setPrompt() 方法设置了在调用 rl.prompt() 时将写入 output 的提示。

              rl.getPrompt()#

              中英对照

                rl.getPrompt() 方法返回 rl.prompt() 使用的当前提示。

                rl.write(data[, key])#

                中英对照

                  rl.write() 方法会将 data 或由 key 标识的键序列写入 output。 仅当 outputTTY 文本终端时才支持 key 参数。 有关组合键的列表,请参阅 TTY 快捷键

                  
                  

                  rl[Symbol.asyncIterator]()#

                  中英对照

                    创建 AsyncIterator 对象,该对象遍历输入流中的每一行作为字符串。 此方法允许通过 for await...of 循环异步迭代 readline.Interface 对象。

                    
                    

                    rl.line#

                    中英对照

                      节点正在处理的当前输入数据。

                      
                      

                      rl.cursor#

                      中英对照

                        相对于 rl.line 的光标位置。

                        rl.getCursorPos()#

                        中英对照

                          返回光标相对于输入提示 + 字符串的实际位置。 长输入(换行)字符串以及多行提示都包含在计算中。

                          readline.clearLine(stream, dir[, callback])#

                          中英对照

                            readline.clearLine() 方法在 dir 标识的指定方向上清除给定 TTY 流的当前行。

                            readline.clearScreenDown(stream[, callback])#

                            中英对照

                              readline.clearScreenDown() 方法从光标的当前位置向下清除给定的 TTY 流。

                              readline.createInterface(options)#

                              中英对照

                                readline.createInterface() 方法创建新的 readline.Interface 实例。

                                
                                

                                
                                

                                completer 函数的使用#

                                中英对照

                                completer 函数将用户输入的当前行作为参数,并返回包含 2 个条目的 Array

                                  
                                  

                                  
                                  

                                  readline.cursorTo(stream, x[, y][, callback])#

                                  中英对照

                                    readline.cursorTo() 方法将光标移动到给定的 TTY stream 中的指定位置。

                                    readline.emitKeypressEvents(stream[, interface])#

                                    中英对照

                                      readline.emitKeypressEvents() 方法使给定的可读流开始触发与接收到的输入相对应的 'keypress' 事件。

                                      
                                      

                                      readline.moveCursor(stream, dx, dy[, callback])#

                                      中英对照

                                        readline.moveCursor() 方法相对于它在给定的 TTY stream 中的当前位置移动光标。

                                        示例:微型 CLI#

                                        中英对照

                                        下面的例子说明了使用 readline.Interface 类来实现一个微型的命令行界面:

                                        
                                        

                                        示例:逐行读取文件流#

                                        中英对照

                                        node:readline 的一个常见用例是每次一行地消费输入文件。 最简单的方式是利用 fs.ReadStream API 和 for await...of 循环:

                                        
                                        

                                        
                                        

                                        
                                        

                                        TTY 快捷键#

                                        中英对照

                                        返回顶部