Node.js NodeJS中需要构造行为

Node.js NodeJS中需要构造行为,node.js,nodejs-stream,Node.js,Nodejs Stream,我正在学习node js,我正在学习sterams模块 我有以下疑问-这两种说法的区别是什么 const {Readable} = require("stream") and const Readable = require("stream") 下面是代码片段的工作原理。意味着数据是由读取流发出的,并且流的结尾也被提升 但是当const{Readable}转换为const Readable时,它停止工作 有人能解释为什么会有这种行为吗 cons

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

我有以下疑问-这两种说法的区别是什么

const {Readable} = require("stream") 
and 
const  Readable  = require("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}
语法称为destructuring,是第二行语法的快捷方式


注意,当您同时获取多个属性时,解构语法确实显示了它的优势:

const {Readable, Writable, Transform, pipeline} = require("stream");
这将在一行代码中声明和初始化多个变量