Node.js, dosya sistemiyle etkileşimde bulunmak için çeşitli modüller sunar. Bunlardan biri, önceki yazımızda ele aldığımız geleneksel fs
modülüdür. Ancak, bu modülün daha modern ve gelişmiş bir versiyonu olan Promise tabanlı fs
modülü, özellikle ES modülleri kullanıldığında daha yaygın olarak karşımıza çıkmaktadır. Bu yazıda, Promise tabanlı fs
modülünün temel özelliklerini ve nasıl kullanılacağını anlatacağız.
Promise tabanlı fs
modülü, asenkron programlama modelini benimser ve geleneksel callback yaklaşımına göre daha temiz ve okunabilir bir kod yazımı sağlar. İki adımda bu modülü kullanmayı göreceğiz:
Modülü projenize dahil etmek için aşağıdaki kodu kullanabilirsiniz:
const fs = require('node:fs/promises');
Dosya okumak için readFile
metodunu kullanacağız:
fs.readFile('file.txt', 'utf-8')
.then(data => console.log(data))
.catch(error => console.log(error));
Burada readFile
metodu, bir Promise döndürür. İşlem başarılı olduğunda then
bloğu, hata durumunda ise catch
bloğu çalışır.
Promise tabanlı fs
modülü, async/await
sözdizimi ile de kullanılabilir. Bunun için aşağıdaki gibi bir fonksiyon tanımlayabilirsiniz:
async function readFileAsync() {
try {
const data = await fs.readFile('file.txt', 'utf-8');
console.log(data);
} catch (error) {
console.log(error);
}
}
readFileAsync();
Bu yaklaşım, kodun daha okunabilir ve yönetilebilir olmasını sağlar.
Node.js'in Callback tabanlı fs
modülü API'ları, performans açısından (hem yürütme süresi hem de bellek kullanımı bakımından) Promise tabanlı versiyondan daha üstün olabilir. Ancak, performans kritik bir faktör değilse, Promise tabanlı fs
modülünü kullanmanızı öneririm.
Bu makalede, Node.js'in Promise tabanlı fs
modülünün temel kullanımını ele aldık:
Promise tabanlı fs
modülü, ES modülleriyle daha yaygın kullanılan bir yaklaşımdır.
Modül, daha temiz ve okunabilir asenkron kod yazımı sağlar.
readFile
metodu ile dosya okuma işlemi yapılabilir.
async/await
ile kod daha anlaşılır hale getirilebilir.
Performans açısından, geleneksel Callback tabanlı fs
modülü tercih edilebilir, ancak genel kullanım için Promise tabanlı modül yeterlidir.