Yükleniyor...

Olay Yayıcı

Olay Yayıcı, Node.js’in çekirdek özelliklerinden biri olarak, olay tabanlı programlamayı mümkün kılarak uygulamalar arasında asenkron iletişimi yönetir. Bu mekanizma, farklı modüller veya bileşenler arasında gevşek bağlılık (loose coupling) sağlayarak, sistemlerin daha ölçeklenebilir ve bakımı kolay olmasını destekler. Olay Yayıcı, özellikle I/O yoğun uygulamalarda, veri akışlarını ve sistem durum değişikliklerini takip etmek için kritik öneme sahiptir.
Node.js geliştirme sürecinde, Olay Yayıcı kullanımı, belirli olaylar için listener’ların kaydedilmesi ve tetiklenmesi mantığını kapsar. Geliştiriciler, bu yapıyı kullanarak uygulama içi bildirimler, hata yönetimi ve gerçek zamanlı veri işlemlerini kolayca gerçekleştirebilirler. Bu içerikte okuyucular, Olay Yayıcı'nın sintaksını, veri yapılarını, algoritma tasarımını ve nesne yönelimli programlama prensiplerini uygulamalı olarak öğreneceklerdir.
Olay Yayıcı ile uygulama geliştirirken, listeners’ları doğru yönetmek, gereksiz memory leak’lerden kaçınmak ve hataları güvenli şekilde ele almak esastır. Bu eğitim, katılımcılara Node.js projelerinde Olay Yayıcı’nın pratik kullanımını göstererek, gerçek dünya senaryolarında olay tabanlı tasarımı etkin bir şekilde nasıl uygulayabileceklerini öğretmeyi hedefler.

Temel Örnek

text
TEXT Code
const EventEmitter = require('events');
class MyEmitter extends EventEmitter {}

const myEmitter = new MyEmitter();

// 'mesaj' olayı için listener kaydetme
myEmitter.on('mesaj', (icerik) => {
console.log(`Alınan mesaj: ${icerik}`);
});

// Olayı tetikleme
myEmitter.emit('mesaj', 'Node.js Olay Yayıcı örneği');

Bu temel örnekte, MyEmitter sınıfı EventEmitter’dan türetilmiştir. Böylece myEmitter örneği, olayları tetikleyebilir ve bu olaylara yanıt verebilir. on yöntemi ile 'mesaj' olayı için bir listener kaydedilir, emit ile olay tetiklenir ve parametre olarak verilen içerik listener’a iletilir.
Bu yapı, OOP prensiplerinden kalıtımı ve encapsulation’ı gösterirken, Node.js’in asenkron programlama modelini de uygular. Listener’ların olayları bağımsız şekilde yakalaması, uygulamanın modüler ve okunabilir olmasını sağlar. Pratikte, bu desen bildirim sistemleri, logging, API çağrıları ve gerçek zamanlı veri akışları için kullanılabilir.

Pratik Örnek

text
TEXT Code
const EventEmitter = require('events');
class TaskManager extends EventEmitter {
constructor() {
super();
this.tasks = [];
}

addTask(task) {
this.tasks.push(task);
this.emit('taskAdded', task);
}

completeTask(taskId) {
const index = this.tasks.findIndex(t => t.id === taskId);
if (index !== -1) {
const completedTask = this.tasks.splice(index, 1)[0];
this.emit('taskCompleted', completedTask);
} else {
this.emit('error', new Error('Tarih bulunamadı'));
}
}

}

const manager = new TaskManager();

manager.on('taskAdded', (task) => {
console.log(`Görev eklendi: ${task.name}`);
});

manager.on('taskCompleted', (task) => {
console.log(`Görev tamamlandı: ${task.name}`);
});

manager.on('error', (err) => {
console.error(`Hata: ${err.message}`);
});

manager.addTask({id: 1, name: 'Frontend geliştirme'});
manager.completeTask(1);
manager.completeTask(2);

Bu gelişmiş örnek, TaskManager sınıfının olay tabanlı mimariyi nasıl etkin bir şekilde kullandığını gösterir. addTask ve completeTask yöntemleri, olayları tetikleyerek sistem durumunu dinamik olarak günceller. Listener’lar, değişiklikleri yakalar ve uygun işlemleri yürütür.
Bu örnek, OOP ilkeleri, algoritmalar ve array manipülasyonu ile birlikte asenkron olay yönetimini pratik olarak gösterir. Node.js best practice olarak, listener’ları yönetmek, hataları güvenli şekilde ele almak ve gereksiz bellek tüketimini önlemek kritik öneme sahiptir.

Olay Yayıcı kullanırken en iyi uygulamalar arasında listener’ları sınırlı sayıda tutmak, gereksiz listener’ları removeListener veya removeAllListeners ile temizlemek, tek seferlik listener’lar için once kullanmak ve olay parametrelerini validate etmek yer alır. Hataları error olayı ile yönetmek, asenkron işlemler sırasında sistemin stabilitesini sağlar. Ayrıca, olay içinde ağır hesaplamalardan kaçınmak ve performans optimizasyonları yapmak uygulamanın verimliliğini artırır.

📊 Referans Tablosu

Node.js Element/Concept Description Usage Example
EventEmitter Olayları yönetmek için sınıf const EventEmitter = require('events'); const emitter = new EventEmitter();
on() Olay için listener kaydetme emitter.on('olay', () => console.log('Olay tetiklendi'));
emit() Olayı tetikleme ve veri gönderme emitter.emit('olay', 'veri');
removeListener() Belirli listener’ı kaldırma emitter.removeListener('olay', listener);
once() Tek seferlik listener kaydetme emitter.once('olay', () => console.log('Sadece bir kez çalışır'));

Olay Yayıcı, Node.js projelerinde asenkron ve reaktif uygulamalar geliştirmek için temel bir araçtır. Bu bilgileri kullanarak, geliştiriciler daha ölçeklenebilir ve modüler sistemler kurabilir. Bir sonraki adım olarak, Node.js Streams, Promises ve async/await ile olay tabanlı programlamayı birleştirmek önerilir. Gerçek zamanlı veri akışları, WebSocket entegrasyonu ve API bildirim sistemleri ile Olay Yayıcı’nın kullanımı güçlendirilebilir.

🧠 Bilginizi Test Edin

Başlamaya Hazır

Bilginizi Test Edin

Bu interaktif sınavla kendini test et ve konuyu ne kadar iyi anladığını gör

4
Sorular
🎯
70%
Geçmek İçin
♾️
Süre
🔄
Deneme

📝 Talimatlar

  • Her soruyu dikkatle okuyun
  • Her soru için en iyi cevabı seçin
  • Quiz'i istediğiniz kadar tekrar alabilirsiniz
  • İlerlemeniz üstte gösterilecek