Node.js'de pipes (borular), veri akışlarını daha etkin bir şekilde yönetmek için kullanılan bir özelliktir. Bu bölümde, pipes kullanımını ve readableStream.on("data", callback)
ile pipe()
metodunun kullanımı arasındaki farkları ele alacağız.
Pipes, bir okunabilir akışı (readable stream) bir yazılabilir akışa (writable stream) bağlamak için kullanılır. Bu, okunabilir akıştan gelen veriyi doğrudan yazılabilir akışa aktarır. Örnek kullanım: readableStream.pipe(writableStream)
. Pipes, veri akışını otomatik olarak yönetir ve bellek kullanımını optimize eder.
readableStream.on("data", callback)
KullanımıBu yöntemde, readableStream
üzerinde 'data' olayı için bir dinleyici tanımlarsınız. Her veri parçası geldiğinde, bu callback fonksiyonu çağrılır. Bu fonksiyon içinde, elde edilen veri parçası (chunk
) işlenebilir ve gerektiğinde yazılabilir akışa manuel olarak yazılabilir:
readableStream.on("data", (chunk) => {
console.log(chunk);
writableStream.write(chunk);
});
readableStream.on("data", callback)
Arasındaki FarklarOtomatik Akış Yönetimi: Pipes, veri akışını otomatik olarak yönetir. readableStream.on("data", callback)
yöntemi ise manuel akış kontrolü sağlar.
Hafıza Yönetimi: Pipes, arka planda hafıza yönetimi yapar ve veri akışını belleğin kapasitesine göre ayarlar. Manuel yöntemde, bu tür bir hafıza yönetimi yapmak geliştiricinin sorumluluğundadır.
Hata Yönetimi: Pipes kullanımında, hata yönetimi daha kolaydır. Akışlarda meydana gelen hatalar, zincirin sonunda yakalanabilir. Manuel yöntemde ise her adımda hata kontrolü yapmak gerekebilir.
Zincirleme (Chaining): Pipes, zincirleme işlemlerine izin verir. Bu, akışları kolayca birbirine bağlamak ve karmaşık işlemleri basitleştirmek için kullanılır. Manuel yöntemde, bu tür bir zincirleme daha karmaşıktır.
Pipes kullanarak zlib
modülü ile dosya sıkıştırma işlemi yapılabilir:
const gzip = zlib.createGzip();
readableStream.pipe(gzip).pipe(fs.createWriteStream('file2.txt.gz'));
Bu örnekte, veri okunabilir akıştan gzip dönüştürücü akışına ve oradan yazılabilir akışa aktarılır.
Node.js'deki pipes, veri akışlarını yönetmek için güçlü ve esnek bir araçtır. Otomatik akış yönetimi, hafıza optimizasyonu ve hata yönetimi ile pipes, büyük veri setleri ve karmaşık akış işlemleri için idealdir. readableStream.on("data", callback)
yöntemi ise daha düşük seviyeli bir kontrol sağlar ve özel durumlarda kullanışlı olabilir. Her iki yöntem de farklı ihtiyaçlara hizmet eder ve Node.js uygulamalarında verimli veri işleme için önemlidir.