Node.js 这是什么;。关于;在;工艺标准“on”;对于

Node.js 这是什么;。关于;在;工艺标准“on”;对于,node.js,stdin,Node.js,Stdin,我在Node.js网站上,我从一个朋友那里得到了一些包含“stdin”的示例代码。 我去寻找什么是stdin,现在我知道了。 不过,在Node.js的网站上,他们使用“stdin.on” 我找不到关于它的任何东西。也许有人能告诉我?!:) 我希望有人能在非专家层面上向我解释这一点。最近我自己也在努力解决同样的问题,经过一番挖掘后,我发现: process对象是EventEmitter 如果您前往,您可以在上找到有关API和功能的更多信息: 将侦听器函数添加到名为eventName的事件的侦听器数

我在Node.js网站上,我从一个朋友那里得到了一些包含“stdin”的示例代码。 我去寻找什么是stdin,现在我知道了。 不过,在Node.js的网站上,他们使用“stdin.on

我找不到关于它的任何东西。也许有人能告诉我?!:)


我希望有人能在非专家层面上向我解释这一点。

最近我自己也在努力解决同样的问题,经过一番挖掘后,我发现:

process
对象是
EventEmitter

如果您前往,您可以在上找到有关API和功能的更多信息:

将侦听器函数添加到名为eventName的事件的侦听器数组的末尾。不检查是否已添加侦听器。传递相同eventName和listener组合的多个调用将导致添加和调用侦听器多次

在我的例子中,它使用以下API方法查看引导我沿着该路径前进的节点的TypeScript定义文件:

export class EventEmitter {
    addListener(event: string | symbol, listener: Function): this;
    // Here is it
    on(event: string | symbol, listener: Function): this;
    once(event: string | symbol, listener: Function): this;
    removeListener(event: string | symbol, listener: Function): this;
    removeAllListeners(event?: string | symbol): this;
    setMaxListeners(n: number): this;
    getMaxListeners(): number;
    listeners(event: string | symbol): Function[];
    emit(event: string | symbol, ...args: any[]): boolean;
    listenerCount(type: string | symbol): number;
    // Added in Node 6...
    prependListener(event: string | symbol, listener: Function): this;
    prependOnceListener(event: string | symbol, listener: Function): this;
    eventNames(): (string | symbol)[];
}
.on()
用于侦听事件。这就像在HTML按钮上收听
单击
事件。实际上jQuery在DOM事件中的用法完全相同

process.stdin
属性返回连接到stdin的
net.Socket

它从stream.Duplex扩展而来,这使得它既可读又可写

所有流都是的实例

现在我们了解了这一点,让我们看看您可以在
process.stdin
中找到什么

.addListener(eventName,listener)

  • (eventName,listener)
.on(eventName,listener)

  • listener
    函数添加到名为
    eventName
.once(eventName,listener)

  • 为名为
    eventName
    的事件添加一个一次性的
    listener
    函数。下次触发
    eventName
    时,将删除并调用此
    侦听器
.off(eventName,listener)

  • 从名为
    eventName
.removeListener(eventName,listener)

  • .off的别名(eventName,listener)
这意味着您可以附加“监听器”,这些监听器执行操作以响应stdin发出的各种事件


例如,当用户按键时。它类似于DOM事件,例如
onClick=“myFunction()”
属性、
对象.onClick
jQuery.on('click')
,不确定这个问题还需要另一个答案,但非常简单
process.stdin.on()
只是一个监听器(如上所述)——它正在监听一个“数据”事件,当用户在键盘上点击“回车”时,该事件被触发。当
.on()
听到该事件时,您可以通过提供回调来执行某些操作。Undercovers节点将用户输入传递给回调

下面是一个非常简单的例子:

// Listen for the 'data' event, then call myCallback...
process.stdin.on('data', myCallback);

let myCallback = (userInput) => {
// In Node the userInput is a Buffer class instance, so .toString() it
// It also comes with a new line character, so let's trim it off         
let input = userInput.toString().trim();
// Now do whatever you want with the userInput...
};
通常情况下,您还需要编写一个发射器来触发您正在侦听的事件,例如:

myEmitter.emit('myEvent', 'The event happened!');

但您不需要这样做——在本例中,只要您在键盘上点击“回车”,节点就会为您发出事件。你所要做的就是用
.on()
,倾听它,然后做一些回应。

@JohnSlegers,我马上会浏览网页,但它并没有真正回答我的问题。我已经“扫描”了页面,但找不到关于“.on”加载项的任何信息。是否有我遗漏的东西,或者它是为了给我一些背景信息:)。编辑:感谢您尽快回复@KrzysztofSafjanowski,我在屏幕顶部弹出了相同的选项。我在问我的问题之前把那页签了出来。虽然我没能弄明白。可能是因为我不熟悉编程。:)编辑:我还特别要求使用“.on”。这不是那个问题的人所问的。我试图理解“.on”和“.once”等的目的是什么。谢谢你的回答!我有几件事让我无法理解我想知道的。由于我不是英国人,我甚至不知道emit的确切翻译(这使我很难理解)。而且我在编程的时候从来没有用过“listener”这个词。在那之后,我再次阅读了你的文章,第一部分很有意义。第二部分。。。我不知道发生了什么事。。。不管怎样,谢谢:)没问题,很高兴我能帮别人摆脱痛苦,找到
的确切位置!是的,在阅读了带有“on”和“once”的部分后,我意识到了它的用途,并且经过了一些实验。。。我让它工作了!:)编辑:我只是不喜欢使用我不懂的代码…:/对“它在哪里”和“它是干什么用的”有一点误解和混淆。
myEmitter.emit('myEvent', 'The event happened!');