需要在 NodeJS 中构造 Behavior

Require construct Behaviour in NodeJS

我正在学习 node js,我在 sterams 模块。

我有以下查询 - 这两个语句之间有什么区别。

const {Readable} = require("stream") 
and 
const  Readable  = require("stream") 

下面的代码片段有效。意味着数据由 Read Stream 发出并且流的结尾也被引发。

但是当 const {Readable} 转换为 const Readable 时,它停止工作

任何人都可以帮助解释为什么会出现这种行为吗?

const {Readable} = require("stream"); // changing const Readable = require("stream") doesn't work 

const createReadStream = () => {

    const data = ["one","two","three"];

    return new Readable({

        read(){
            if (data.length === 0) {
                console.log('data ended');
                this.push(null);
            } else{
                console.log('reading data');
                this.push(data.shift());
            }
        }
    });

}

这两个:

const {Readable} = require("stream"); 

const  Readable  = require("stream"); 

不一样,第二个显然不行。第二个将整个模块句柄分配给 Readable,而第一个将模块中的 .Readable 属性 分配给变量 Readable。也许你想比较的是这两个:

const {Readable} = require("stream"); 

const Readable = require("stream").Readable; 

这两个几乎是等价的。 const {Readable} 语法称为解构,是第二行语法的快捷方式。


请注意,当您一次获取多个属性时,解构语法真正显示出它的优势:

const {Readable, Writable, Transform, pipeline} = require("stream");

因为这在一行代码中声明并初始化了多个变量。