究竟什么是“节点核心对象”?

时间:2017-11-29 12:28:13

标签: node.js

我期待一个定义。我有时会阅读NodeJs教程或书籍中的“节点核心对象”,但我没有找到任何关于它们的先前的解释。

1 个答案:

答案 0 :(得分:0)

Node.js基于JavaScript。正如您可能知道的那样,JavaScript并没有在更大程度上完全支持OOPS。 Node的核心模块不使用对象流,部分原因是还没有真正的用例。但是,我们可以通过使用objectMode选项在我们自己的代码中使用对象流。当在objectMode中,流可以推送字符串和缓冲区以及任何其他JavaScript对象。另一个主要区别是,在objectMode中,内部缓冲算法计算对象而不是字节。这意味着如果我们有一个将highWaterMark选项设置为5的Transform流,则该流将仅在内部缓冲最多5个对象。 例如: -

var through2 = require('through2')
var split2 = require('split2')

var stream = through2({ objectMode: true }, function(chunk, enc, callback) {
    var string = chunk.toString()
    var result = string.replace(/\n/, '').toUpperCase().split(/[ \t]/)

    this.push(result)
    callback()
})

stream.on('data', function(data) {
    var toString = Object.prototype.toString.call(data)
    console.log('type of data:', toString)
    console.log('data:', data, '\n')
})

process.stdin
    .pipe(split2())
    .pipe(stream)

输出将是: -

Hello world
type of data: [object Array]
data: ["HELLO", "WORLD"]

Transform streams are great!
type of data: [object Array]
data: ["TRANSFORM", "STREAMS", "ARE", "GREAT!"]