Web Streams API - это стандартизированный API для работы с потоками данных, который:
const { ReadableStream } = require('node:stream/web');
async function processStream() {
const readable = new ReadableStream({
start(controller) {
controller.enqueue('Hello');
controller.enqueue('Streams');
controller.close();
}
});
for await (const chunk of readable) {
console.log(chunk); // 'Hello', затем 'Streams'
}
}
node:stream (ранее require('stream')) - это:
const { Readable } = require('node:stream');
const readable = new Readable({
read() {
this.push('Hello');
this.push('Classic');
this.push(null);
}
});
readable.on('data', (chunk) => {
console.log(chunk.toString());
});
Критерий | Module-Based | Process-Based |
---|---|---|
Область видимости | Локальная модуля | Глобальная процесса |
Безопасность | Высокая | Низкая |
Доступ к данным | Только через экспорт | Прямой доступ |
Использование | Для основной логики | Для конфигурации |
Тестируемость | Легко тестировать | Сложнее тестировать |
const { Readable } = require('node:stream');
const { ReadableStream } = require('node:stream/web');
// Из Node.js Stream в Web Stream
const nodeReadable = new Readable();
const webReadableStream = Readable.toWeb(nodeReadable);
// Из Web Stream в Node.js Stream
const webStream = new ReadableStream();
const nodeStream = Readable.fromWeb(webStream);
Web Streams API и node:stream представляют два подхода к работе с потоками в Node.js. Web Streams API предлагает стандартизированное, современное и кросс-платформенное решение, в то время как node:stream дает более глубокий контроль и лучше интегрируется с существующей экосистемой Node.js. Выбор между ними должен основываться на требованиях проекта, необходимости кросс-платформенности и используемых зависимостях.