Javascript -Node.js我什么时候需要'需要'模块

时间:2018-02-15 02:10:05

标签: javascript node.js

我对Node.js和服务器端编程一般都很陌生,对基本的Node规则仍然有点困惑。要启动http服务器,我需要http模块。服务器本身返回一个请求和一个响应对象,(据我所知,如果我错了,请纠正我)是eventEmitters和stream对象。我仍然可以使用req.on()和res.write()等方法,而不需要stream和eventEmitter模块。但是,当我尝试使用管道函数req.pipe(res)时,会发生错误,指出未定义管道功能。我认为这是因为我没有包含流模块。为什么我可以使用某些流功能而不需要模块,而不需要其他模块?

1 个答案:

答案 0 :(得分:0)

看起来你对Javascript也很陌生,但我会尽力解释这一点。 require基本上导入一个对象,以便您可以使用它提供的功能。但是如果你已经有了一个对象,那么你就不需要导入(require)因为它已经存在了。

例如,如果要创建流,则需要require,因为创建流是您需要导入的功能。但是,您的函数仍然可以使用stream作为参数并使用它,因为它已经存在。

const Stream = require('stream');

// need to require stream since we'd like to use it to create an object
const mystream = new Stream();

-

// no need to require stream here since you're given the object
function doSomethingWithStream(streamObject){
    streamObject.on('data', () => { /* do something */ });
}

因此,在您的情况下,您不需要require stream,因为您已拥有该对象。虽然您的res对象应该有一个管道方法(请参阅下面的示例),但它不起作用,因为管道仅适用于Readable流到Writable流和{{1} }是res流(请参阅节点Writable文档)。

Stream