2025’te React vs Backbone

Paylaş:
2025’te React vs Backbone

15 Yıllık İlerleme

Aynı işi yapıyorlar. Biri 2010’ların bir framework’üyle yazıldı, diğeri on yılı aşkın süredir sayısız geliştirici saatinin ve dev bir ekosistemin arkasında olduğu modern bir framework’le.

İlginç olan React’in ne kadar iyi olduğu değil — aslında ne kadar az ilerleme kaydettiğimiz.

Basitlik Yanılsaması

React daha temiz görünüyor. İlk bakışta daha iyi okunuyor. Ancak bu okunabilirlik bir bedel karşılığında geliyor: açık-seçik basitliği, soyutlama karmaşıklığıyla değiş tokuş ediyorsunuz.

Backbone kodu ne yaptığını acımasızca dürüst bir şekilde gösterir. Bir olay tetiklenir, bir işleyici çalışır, HTML üretir, DOM’a koyarsınız. Evet, daha uzun; ama gizem yok. Junior biri bile tam olarak neyin, ne zaman olduğunu izleyebilir. Zihinsel model nettir: “Bu olursa, şunu yap.”

React kodu ise pek çok şeyi saklar. Basit örnekleri geçince, React’in iç işleyişini anlamadan mantık dışı görünen sorunlara çarparsınız.

  • Input’unuz gizemli şekilde kendini sıfırlar. Meğer listedeki key’i stabil ID’den index’e çevirmişsiniz; React bunu bambaşka bir bileşen sanıp remount ediyor ve state uçuyor. Ya da value bir an undefined olmuş; uncontrolled → controlled geçişinde React input’u resetlemiş.
  • useEffect ile veri çekiyorsunuz; uygulama sonsuz döngüye giriyor. Bağımlılıklar dizisinde her render’da yeniden yaratılan bir nesne var; React “değişti” sanıp efekti tekrar çalıştırıyor. Şimdi her yerde “kimlik sabitleme” için useMemo/useCallback serpiyorsunuz — daha önce hiç düşünmek zorunda kalmadığınız bir konu.
  • Click handler’ınız “eski state”i görüyor; az önce set etmiştiniz. Bu “stale closure”. Fonksiyon, yaratıldığı anda yakaladığı değeri taşıyor; sonraki render’lar sihirle güncellemiyor. Çözüm? Ya state’i bağımlılıklara koyup handler’ı her seferinde yeniden üretmek ya da setState(x => x + 1) gibi fonksiyonel güncelleme kullanmak. İkisi de yama gibi hissettiriyor.

Büyünün Bedeli Yüksek

Bunlar köşe vakalar değil; orta ölçekli uygulamalarda normal karşılaştığınız problemler. Ve bunları debug etmek, uzlaştırma (reconciliation) algoritmalarını, render evrelerini, React’in planlayıcısının (scheduler) güncellemeleri nasıl gruplayıp zamanladığını anlamayı gerektiriyor. Kodunuz “neden” çalıştığını anlamadan da çalışabiliyor — bu güzel; ta ki bozulana kadar.

“React’i sıfırdan yazmadan gerçekten anlayamazsın” diyenler var; haklılar. Ama bu biraz da düşündürücü, değil mi? Bir şifre doğrulayıcı yazmak için sanal DOM diffing, öncelikler ve eşzamanlı render’ı bilmek zorunda olmamalısınız.

Backbone can sıkıcı olabilir, ama size yalan söylemez. jQuery “hacklenebilir”. Kaynağı açar, anlarsınız; DOM API’lerinden ibaret. React’in soyutlama katmanları bunu zorlaştırıyor.

Peki Sırada Ne Var?

Problemi anlıyoruz: olay + durum = arayüz. Hepsi bu. Her iki yaklaşımın da çözdüğü öz şey bu.

Aynı sayfada 1.000 bileşenli devasa uygulamalar için React’in karmaşıklığı makul olabilir. Peki geri kalan %99? Sadece işini yapmak isteyen, sihre ihtiyacı olmayan küçük uygulamalar?

Daha iyi bir model var mı? DOM kadar sağlam ve güvenilir hissi veren ama yazması sezgisel olan? Backbone ve jQuery gibi “hacklenebilir” — DevTools’u açıp olup biteni anlayabildiğiniz bir şey?

Belki cevabın formülü değişmedi: olaylar ve durum, doğrudan arayüzü belirler. Önemli olan, bunu gereksiz soyutlama borcuna girmeden, küçük ve orta ölçekli uygulamalarda akıcı kılan bir tasarım bulmak. Büyükler için gereken karmaşıklığı, küçüklerin omzuna yüklemeden.

Makale Bilgileri

Yazar: İsmail Hakkı EREN
İlgili Yazılar