v2.5.2
Giriş yap

Context ve Redux yapısı

violetbee
719 defa görüntülendi

Projelerimizde Context ve Redux Toolkit yapısını aynı anda kullanmalı mıyız? Yabancı ve yerli içeriklere baktığımda genelde birisi tercih edilmiş. Ya da direk useReducer ile Context yapısı kullanılmış.

ebykdrms
857 gün önce

Yazdıklarım tamamen benim bakış açım. Kendi düşüncelerim.

Context iyidir. Redux, henüz Context'in olmadığı zamanlarda ihtiyacı kapatmak için oluşturulmuş bir proje olarak piyasada kendine büyük yer açtı. Ama artık Context var. Doğrudan react ile birlikte geldiği için ekstra kurulumlara gerek yok. Şu an Redux'ın çok kullanılmasının nedeni vaktinde piyasaya yayılmış olması sadece. Eğer redux, context'ten sonra ortaya çıkmış olaydı piyasa çoğunlukla context'in kolaylığından vazgeçip redux karmaşasına girmezdi. Tabi zaman içinde redux da gelişiyor ama ben Context öneririm. Redux'a karşı mutlaka olması gereken herhangi bir eksikliğini görmedim.
Gerçi bana sorarsanız Svelte dururken React da kullanılmamalı. Hem performans hem kullanım kolaylığı açısından kendini kanıtlamış Svelte dururken React kullanılması da React'ın piyasayı ele geçirmiş olmasından kaynaklanıyor. Svelte eğer React'tan önce çıksaydı pek kimse React veya Vue kullanmazdı. Tabi Svelte topluluğu henüz yeterince büyük olmadığı için bir sorun yaşadığınızda stackoverlow'dan hazır cevaplar bulma olasılığınız diğerlerine göre çok düşük. Sorunlarını çözmek için doğrudan projenin github hesabına issue'ler açmanız veya İngilizce dokümantasyonlarda bol bol dolaşmanız gerekebilir.

Bu seçim biraz da sizin olaya bakış açınızla alakalı.

if site performansının bir miktar yavaş olması çok önemli değilse ama hızlı çözümler üretip hızlıca değişikliklerinizi yayına almaya öncelik veriyorsanız:

  • React, Vue, Angular, Svelte vs. yerine JQuery kullanın. JQuery büyük projelerde de kullanılır/kullanılıyor. JQuery'nin yavaşlığı biraz da onu yanlış kullanmaktan kaynaklanıyor. Elinizde JQuery kolaylığı var diye sürekli DOM'da element seçip manipulasyon yapmaya kalkarsanız tabii ki yavaş olur. Ama buna dikkat ederseniz, yani DOM'la minimum etkileşime girecek şekilde işlemlerinizi javascript'in arkaplanda yapmasını sağlarsanız ve DOM'a sadece gerektiğinde müdahale ederseniz aşağı yukarı React'ın Sanal DOM olayını gerçekleştirmiş olursunuz. Aradaki performans farkı da son kullanıcının fark edebileceği veya önemseyeceği kadar büyük olmaz.

else if mümkün olduğunca sade (okunaklı, anlaşılır) ve performanslı bir uygulama geliştirmeye öncelik veriyorsanız:

  • React, Vue, Angular yerine Svelte kullanın. Büyük projelerde kullanma tercihi tek başına size kalmıyor genelde çünkü bir büyük projeler ekiple geliştirilir ve bir ekipten herkesin Svelte bilmesi pek mümkün olmuyor. Ama pekala büyük projelerde kullanılabilir. Hatta bence büyük projelerde özellikle tercih etmek lazım çünkü proje büyüdükçe kod karmaşası artacaktır. Svelte bu karmaşayı minimumda tutmaya çalışır.
  • React kullanmanız gerekiyorsa Redux yerine Context API kullanın.

else if React kullanmak zorundaysanız/istiyorsanız ve mümkün olduğunca ekstra araçlardan kaçınarak projenizi sade tutmak istiyorsanız:

  • React kullanın. Yüzlerce büyüklü küçüklü proje yazılmış. Binlerce soruna çözümler bulunmuş. Yavaş da olsa React projesi halen geliştiriliyor ve iyileştirilmeye çalışılıyor.
  • Context API kullanın. Redux projenizde işinizi sağlam yaptığınızı hissettiğiniz ama aslında Context ile yapacağınız işleri biraz daha dolambaçlı yaptığınız bir sistem. (Evet Redux'a karşı biraz acımasız yaklaştığım doğrudur.)

else if daha kolay işe girebileceğiniz, yani işi paraya çevirmeye öncelik veriyorsanız:

  • Mutlaka React kullanın. Kendi kişisel web sitenizi de yapsanız, freelance işler de yapsanız, ücretsiz uygulamalar da geliştirseniz ille de React kullanın. Yaptığınız işler size referans olacaktır. React biliyor olmanız sizi bugün için aranan eleman yapar.
  • Context API'ın temel mantığını da bilin ama Redux'ı iyi bilin ve kullanın. Geçmişte bir çok büyük proje redux kullanarak kodlandı. Bi'gün büyük bir projeye dahil olmaya (büyük bir firmada işe girmeye veya freelance bir projeye dahil olmaya) çalıştığınız zaman redux bilmemek sizi eler.

else

  • Pure javascript kullanın. Doğru kurallara dikkat ederek yazarsanız üstteki iflerin hiçbiri bunun performansına yetişemez (ama svelte çok yaklaşır).