`

基于Node.js的底层循环输入与process.stdin触发end事件

 
阅读更多

题记:

   这几天一直在学习Node.js,正好学习到了Node的process对象,以及此对象中的一些内容。下面,今天就来讲讲怎么利用原生的process来实现,基本的循环输入!

正文:

   首先呢,我们要先来认识一下process对象,什么是process对象呢?process对象其实就是代表着Node.js的应用程序,也是一个全局对象。再次不在赘述,今天我们主要来看看process对象的两个比较特别的属性stdinstdout。

  •     stdin:属性值为一个可用于写入标准输入流的对象,在默认情况下标准输入流是暂停状态需要使用
    process.stdin.resume();
  •     stdout:属性值为一个可用于写入标准输出流的对象

   了解了基本知识,我们可以来看看代码如何实现process的循环输入

process.stdin.setEncoding('utf8');

process.stdin.on('readable', function(){
    var chunk = process.stdin.read(); // 获取到输入的信息
if(typeof chunk === 'string'){
    chunk = chunk.slice(0,-2); // 这个是利用切片,切掉我们的回车\n
    process.stdout.write('stringLength:'+ chunk.length +'\n');
}
if(chunk === ''){
    process.stdin.emit('end'); // 触发end事件
    return
}
if (chunk !== null) {
    process.stdout.write('data: '+ chunk +'\n');
}
});

process.stdin.on('end', function() {
    process.stdout.write('end');
});

   
    

    大家可以看到,当我输入字符串时,可以获取到我字符串的长度,并输出长度与字符串,

    而我只输入回车时,我用

slice(0,-2)

    剪切掉了\n,实现了过滤回车的效果。

    其中值得注意的是,如何触发process.stdinend事件!

    使用

    

process.stdin.exit()

    并不能触发end事件,而我们只能利用

process.stdin.emit('end');

    来触发,值得我们注意哦!也有助于我们想用node来刷题的同学使用!

  • 大小: 20.9 KB
0
0
分享到:
评论

相关推荐

    node.js api

    Node.js异步事件驱动的特点,使它内建了事件循环和事件发射器机制。 - **events.EventEmitter**:用于实现事件发射器。 ### Buffers缓冲区 在Node.js中,Buffer类用于表示固定长度的字节序列,这些字节序列用于...

    Node.js-tmpin-添加stdin支持至任何CLI应用程序接受文件输入

    标题中的“Node.js-tmpin-添加stdin支持至任何CLI应用程序接受文件输入”指的是一个名为“tmpin”的Node.js模块,它的主要功能是为命令行界面(CLI)应用程序添加标准输入(stdin)的支持,以便这些应用程序能够接收...

    Node.js-get-stdin-获得stdin作为一个字符串或缓冲区

    在Node.js环境中,标准输入(stdin)是程序接收输入数据的一种方式,通常用于命令行工具。`get-stdin`是一个非常实用的模块,它允许开发者简单地从stdin获取数据,无论是作为字符串还是缓冲区。这个模块对于那些需要...

    Node.js-PyNode-从node.js调用python代码

    Node.js以其非阻塞I/O模型和JavaScript的便捷性在Web开发中占据了一席之地,而Python则以其强大的科学计算、数据分析以及机器学习库而闻名。当我们需要将这两种技术结合时,"PyNode"的概念就应运而生了。本文将详细...

    基于node开发的终端小游戏.zip

    5. **控制台操作**:Node.js提供了一些API,如`console.log()`用于打印信息到控制台,以及`process.stdin`和`process.stdout`来读取用户输入和输出游戏内容。 6. **游戏逻辑**:开发游戏需要编写游戏规则和逻辑。这...

    Node.js v4.2.4 手册

    - **process.nextTick(callback)**: 在下一次事件循环开始之前执行回调函数。 - **process.umask([mask])**: 文件权限掩码。 - **process.uptime()**: 进程运行时间。 - **process.hrtime()**: 高精度时间。 #### ...

    深入理解Node.js中的进程管理

    Node.js作为一款广泛使用的服务器端JavaScript运行环境,其设计之初就秉承了异步和事件驱动的原则,允许开发者构建轻量级的网络应用。在Node.js中,进程管理是进行性能优化和资源高效使用的重要方面。Node.js的进程...

    Node.js-Uniread是一个类似于Spritz的CLI快速阅读软件

    Node.js是一个基于Chrome V8引擎的JavaScript运行环境,它让开发者可以在服务器端使用JavaScript编写代码,极大地拓宽了JavaScript的应用领域。Uniread是一款基于Node.js的命令行工具,设计灵感来源于Spritz,一个...

    Node.js-在一个过程中运行WebTorrent可以控制它甚至从另一个进程或另一台机器

    在Node.js中,我们可以使用子进程(child_process)模块来启动一个WebTorrent进程,然后通过特定的通信机制(如IPC,即进程间通信)与其他进程交换信息,从而实现对WebTorrent实例的控制。例如,我们可以在一个进程...

    Node.js中process模块常用的属性和方法

    在Node.js环境中,`process`模块是一个全局对象,它提供了与当前Node.js进程相关的属性和方法,使得开发者能够与操作系统的交互变得更加便捷。这个模块在处理命令行接口、进程管理和错误处理等方面尤其有用,尤其在...

    node的process以及child_process模块学习笔记

    在Node.js环境中,每个应用程序都运行在一个单独的进程内,这个进程由`process`对象来表示,它是一个全局对象,提供了访问和控制当前进程的方法和属性。`process`对象是Node.js的核心特性之一,让我们深入了解它的...

    详解从Node.js的child_process模块来学习父子进程之间的通信

    Node.js进程与子进程之间的stdin、stdout、stderr管道默认是连接的,这些管道允许进程间进行数据的传递。需要注意的是,Node.js进程并不会立即消费传递给子进程的数据,这一点在内部使用了行缓冲I/O的程序中尤为明显...

    yode:使用GUI消息循环的Node.js的分支

    Yode是Node.js的一个分支,它将其事件循环替换为GUI消息循环,它旨在与一起使用。 对Node.js的更改 事件循环已替换为本地GUI消息循环: 在Linux上是GTK+事件循环。 在macOS上是Cocoa运行循环; 在Windows上是Win...

    nodejs教程javascript标准参考教程.docx

    Node.js 是一种基于 Chrome V8 引擎的 JavaScript 运行环境,专为构建网络应用而设计,尤其适合开发高性能的 I/O 密集型应用。Node.js 的设计思想是利用非阻塞I/O和事件驱动的方式,使其在单线程环境下也能高效地...

    NodeJs终端聊天室

    Node.js是一种基于Chrome V8引擎的JavaScript运行环境,它允许开发者在服务器端使用JavaScript进行编程。这个项目创建了一个“Node.js终端聊天室”,通过server.js和client.js两个核心文件实现。接下来,我们将深入...

    Node.js文件操作详解

    在Node.js中,有三个特殊的文件描述符,分别是1、2和3,它们分别对应标准输入(stdin)、标准输出(stdout)和标准错误输出(stderr)。标准输入是只读的,它允许进程从控制台或其他进程通道读取数据;标准输出和...

Global site tag (gtag.js) - Google Analytics