İnternet ve sosyal medya kullanımının artmasıyla birlikte web çözümleri, artan kitle ihtiyaçlarını karşılamak için son derece duyarlı kullanıcı arayüzleri geliştirmeye başladı.
Daha etkileşimli uygulamalara yönelik artan talep, JavaScript çerçevelerinin yükselmesine katkıda bulundu ve React, Angular ve Vue en popüler çerçevelerden bazıları haline geldi.
Bunlar saydıklarımız arasında React ön plana çıktı ve muazzam bir popülerlik kazandı. React, 11 milyondan fazla web sitesine güç verirken, dünya çapında %42,62'lik geliştirici kullanımı ile listelerin başında yer aldı.
React, arayüzler oluşturmak için kullanılan bir ön uç JavaScript kütüphanesidir ve Meta tarafından 2011 yılında oluşturulmuştur.
Facebook haber kaynağı üzerinde çalışırken, geleneksel sayfa oluşturma yöntemlerinin yavaş olduğu ve geliştiricilerin karmaşık kod güncellemeleriyle uğraştığı performans sorunlarıyla karşılaştı. Kitlesi hızla artan Facebook'un olağanüstü bir şeye ihtiyacı vardı. Böylece Meta mühendisleri, 2013 yılında açık kaynaklı bir kütüphane olarak piyasaya sürülen React'i tasarladı.
Document Object Model manipülasyonunu sunarak web geliştirmede devrim yarattı. Bu konsept, web sayfasını tamamen yenilemek yerine yalnızca gerekli kısımları yüklediği için yanıt verebilirliği artırdı.
React ayrıca yeni bir bileşen kavramı da getirdi. Buna göre, mühendisler, ayrı kullanıcı arayüzü öğeleri oluşturabilir ve bunları uygulama boyunca yeniden kullanabilir. Bu da karmaşık kullanıcı arayüzlerinin geliştirilmesini ve bakımını önemli ölçüde basitleştirir.
Bu yenilikler sayesinde React çerçevesi yaygın bir şekilde benimsendi. Dünya çapındaki şirketler, ilgi çekici web çözümleri oluşturmak ve pazara açılmayı hızlandırmak için React geliştiricilerini aktif olarak işe almaya başladı.
React, başlangıcından bu yana sürekli gelişti ve 2023'te de gelişimini sürdürdü.
React'in en son sürümü eş zamanlı işleme gibi yeni geliştirmeler getirdi. React 18'den önce arayüz güncellemeleri teker teker işleniyordu. Eşzamanlılık, React'in kullanıcı etkileşimine hızlı bir şekilde yanıt vermek için acil olmayan ve ağır görevleri duraklatmasını sağladı. Örneğin, büyük bir tablo işlenirken, React ilk birkaç satırı işleyebilir, kaydırma veya tıklamaya yanıt vermek için duraklayabilir ve ardından işlemeyi tamamlayabilir. Bu da daha akıcı bir kullanıcı deneyimi sağlar.
Eşzamanlılık, daha önce mümkün olmayan yeni yetenekleri mümkün kıldı. Örneğin, geliştiriciler artık ek kod yazmadan animasyonları daha akıcı hale getirebilirler.
React, karmaşık kullanıcı arayüzleri oluşturmak için tasarlanmıştır. JavaScript kodu içinde HTML benzeri sözdizimi kullanılmasına olanak tanıyarak geliştiricilerin yeniden kullanılabilir bileşenler oluşturmasına ve kullanıcı arayüzü uygulaması için daha az kod yazmasına olanak tanır.
React, aşağıdaki özellikleri nedeniyle web geliştirmede yaygın olarak kullanılmaktadır:
Kod Yeniden Kullanılabilirliği: UI bileşenleri oluşturmaya ve bunları kolayca yeni işlevler oluşturmak için değiştirmeye olanak tanır.
Kod Kararlılığı: React bileşenleri birbirinden izole edilmiştir ve geliştiricilerin tüm uygulamayı etkilemeden kod değişiklikleri yapmasına olanak tanır.
Sanal DOM (Belge Nesne Modeli): Web sayfalarının daha hızlı oluşturulmasını ve yüklenmesini sağlayan gerçek DOM'un hafif bir kopyasıdır.
Kolaylaştırılmış Hata Ayıklama: React JS, hataları hızlı bir şekilde kolayca izlemek ve düzeltmek için Flux ve Redux gibi araçlarla tek yönlü veri akışı kullanır.
Zengin Eklenti Seti: React, stil, animasyon ve diğer web uygulaması hayati özelliklerini geliştirmek için birçok önceden oluşturulmuş araç sağlar.
React son derece üretken bir JavaScript çerçevesidir ve karmaşık kullanıcı arayüzlerinin daha kısa bir geliştirme süresi içinde oluşturulmasına olanak tanır. Ancak işletmelerin uygulamaları için React'i kullanmalarının birçok nedeni vardır. Bunlar aşağıdaki şekildedir:
Deklaratif kodlama stili, React.js'yi kullanmanın en önemli avantajlarından biridir ve uygulama için daha az kod ve zamanla zengin kullanıcı arayüzleri oluşturmaya olanak tanır.
Tıklandığında renk değiştiren bir buton hayal edin. Bu durumda geliştiriciler, emredici bir stille tıklama olaylarını dinleyen ve bir buton durumunu güncelleyen kod yazmalıdır. Bu, özellikle daha karmaşık kullanıcı arayüzleri ile uğraşırken zaman alıcı ve hataya açık olabilir.
React ile geliştiriciler sadece butonun tıklandığında ne yapması gerektiğini tanımlayabilir, kütüphane ise gerisini halleder.
React, güvenilirliğinin ve React JS'in neden yaygın olduğunun bir kanıtı olarak Facebook mühendisleri tarafından kullanılmaktadır.
GitHub'da 200 binden fazla yıldız ve 1600 düzenli katılımcıyla sürükleyici bir topluluğa sahiptir.
Geliştiricilerin React kullanımının özelliklerini tartışabilecekleri birçok aktif forum, kaynak ve sağlam bir çevrimiçi varlığı vardır. Bunlardan bazıları aşağıdakileri içerir:
Böylesine güçlü bir topluluk desteği sayesinde, geliştiriciler sorunları hızla çözebilir ve trend olan özellikleri düzgün bir şekilde uygulayabilir.
React geriye dönük uyumluluğu bir öncelik haline getirir. Bu, eski React sürümlerinin yenileriyle uyumlu olmasını ve uygulamanızın kütüphanenin yeni sürümleriyle etkili bir şekilde çalışmaya devam etmesini sağlar.
Ek olarak, React modüler kod sağlar ve uygulamanın diğer bölümlerini etkilemeden kolayca değiştirilebilir.
Bu özellikler kod tabanının kararlılığını artırırken değişikliklere karşı esnek olmasını sağlar. React JS'in web uygulamaları oluşturmak için bu kadar popüler olmasının bir başka nedeni de budur.
Özel bileşenler React mimarisinin temel bir parçasıdır. Bu yalıtılmış öğeler, nihai kullanıcı arayüzünü oluşturmak için bir araya getirilebilir. Bu, React'in programlamada ne için kullanıldığını tanımlayan en önemli hususlardan biridir.
React geliştiricileri, bunları oluşturmak için HTML'yi destekleyen JS kodunun bir uzantısı olan JSX'i kullanabilir. Bu sözdizimi, benzersiz görünüm ve davranışlara sahip UI parçaları oluşturmayı sağlar. Her bileşen ayrı ayrı değiştirilebilir ve genişletilebilir.
Bu, React'i belirli proje ihtiyaçlarına uyacak şekilde genişletilebilir ve son derece özelleştirilebilir kullanıcı arayüzü oluşturmak için harika bir araç haline getirir.
Bileşenlerin yeniden kullanılabilirliği React'in bir diğer ayağıdır. Geliştiricilerin bileşenleri her yerde birden çok kez yeniden kullanmasına olanak tanıyarak mevcut kodu değiştirmeyi ve yeni işlevler oluşturmayı kolaylaştırır.
Geliştiriciler ayrıca benzer davranışa veya stile sahip birimleri birleştiren sarmalayıcı bileşenler, yani "kapsayıcılar" oluşturabilirler. Uygulamalar arasında bile gerektiğinde daha büyük kullanıcı arayüzü parçalarının yeniden kullanılmasına olanak tanır.
Bu, geliştirmeyi hızlandırmaya ve projeler arasında tutarlı kullanıcı deneyimleri sağlamaya yardımcı olur ve ReactJS'nin UI geliştirme için neden son derece verimli olduğunu açıklar.
React hızlı render için optimize edilmiştir. Bir sayfayı tamamen yeniden oluşturmadan yalnızca gerekli kısımlarını güncelleyebilir. Ayrıca daha hızlı sayfa yükleme için sunucu tarafı oluşturmayı da destekler.
Bu özellikler, özellikle daha yavaş ağ bağlantıları için sayfa yükleme sürelerini iyileştirir.
Yüksek React performansının büyük bir kısmı sanal DOM ile gelir.
DOM, web sayfasını temsil eden ağaç benzeri bir yapıdır. Kullanıcı bir uygulama ile her etkileşime girdiğinde, tarayıcı tüm DOM "ağacını" günceller. Bu işlem uygulamayı yavaşlatabilir.
React'in sanal DOM'u, gerçek DOM'un hafif bir kopyasıdır.
Peki, ReactJS bununla ne yapar?
Bir kullanıcı bir uygulama ile etkileşime girdiğinde, React sanal DOM'u günceller ve gerçek DOM'u güncellemek için minimum değişiklik kümesini hesaplar. Daha sonra kullanıcı arayüzünün tamamını değil, gerekli kısımlarını günceller.
Bu, React'in işleme sürecini geleneksel yöntemlerden daha hızlı ve daha verimli hale getirir.
JSX, HTML benzeri sözdiziminin doğrudan JavaScript kodu içinde yazılmasını sağlar.
İlk olarak, HTML ve JavaScript dosyalarını ayırma ihtiyacını ortadan kaldırarak zamandan tasarruf sağlar ve kod tabanı karmaşıklığını azaltır.
İkinci olarak, JSX performans için optimize edilmiştir. Derleme sırasında JavaScript'e dönüştürülür ve hem HTML hem de JavaScript'in ayrı ayrı yürütülmesine kıyasla bir tarayıcı tarafından hızlı bir şekilde yürütülür.
JSX ve sanal DOM, özellikle bileşik kullanıcı arayüzüne sahip uygulamalar için önemli performans iyileştirmeleri sağlayabilir.
React, uygulama boyunca tek bir yönde veri akışı sağlar; veri yalnızca ana bileşenden alt bileşenlere aktarılır.
Ana bileşenin durumu değiştiğinde, bu durum alt bileşenlere yayılır. Veriler tek yönde aktığı için değişikliklerin nereden geldiği açıktır, böylece geliştiriciler hataları kaynağına kadar kolayca izleyebilir ve çözebilir.
Bu model, daha sürdürülebilir bir kod elde edilmesine yardımcı olarak uygulamanın ölçeklenebilirliğini kolaylaştırır.
Flux ve Redux, React JS çerçevesindeki bileşenlerin durumunu yönetmeye yardımcı olan yerleşik araçlardır:
Flux, yukarıda bahsedilen tek yönlü veri akışını sağlayan bir mimari modeldir. Veri tutarlılığını sağlar ve öngörülebilir değişiklikler sağlar.
Redux bir Flux uygulamasıdır (tüm uygulama verileri için merkezi bir depoya sahip bir kütüphane). Depoda değişiklik yapıldığında, bağlı tüm bileşenler yeni verileri yansıtacak şekilde otomatik olarak güncellenir.
Bir uygulamayı birden fazla şeridi olan bir otoyol olarak düşünürseniz, her iki araç da "arabaları" (yani bileşenleri) kontrollü bir şekilde düzenlemeyi amaçlar. Bu, beklenmedik "çarpışmaları" önlemeye yardımcı olur ve büyük ölçekli uygulamaların bakımını kolaylaştırır.
React Hook'lar, React 16.8'de stateful mantık eklemenin ve bunu bileşenler arasında paylaşmanın yeni bir yolu olarak tanıtıldı.
Hook'lardan önce, bu yalnızca ek zaman gerektiren ve karmaşık kod organizasyonuna yol açan sınıflar yazarak gerçekleştirilebiliyordu. Sonuç olarak Hooks bu sorunu ortadan kaldırdı.
Genel olarak, bu geliştirici araçları kod tabanını yönetmek ve uygulama geliştirmeyi hızlandırmak için daha basit bir yol sağlar.
React, işlevselliğini geliştirmek için çok çeşitli uzantılar sunar.
Bu uzantılar arasında durum yönetimi (Redux, MobX), şekillendirme (styled-components, Material UI), animasyonlar (react-spring, Framer Motion), test (React Testing Library, Enzyme) ve daha fazlası için araçlar bulunur.
Uzantılar, geliştiricilerin çalışmalarını daha verimli hale getirerek uygulamanızın kalitesini ve işlevselliğini artırabilir.
React, Fortune 500 şirketleri tarafından yaygın olarak benimsenmiştir. Bunlar arasında Netflix, Airbnb, Uber, Twitter, Amazon ve diğerleri bulunmaktadır.
Uygulama performansını iyileştirme, bileşenlerin yeniden kullanılabilirliğini artırma ve geliştirmeyi kolaylaştırma yeteneği, web ve mobil uygulamalar için React kullanımının neden yaygın olarak benimsendiğini açıklamaktadır.
Gatsby, en yaygın olarak "GraphQL ve Webpack ile birlikte React statik site oluşturucu" olarak tanımlanır. Hem web hem de mobil uygulamalar için bir derleyici gibi çalışan, aynı zamanda bir ETL aracı (Extract, Transform and Load) olarak çalışan bir çerçevedir.
Gatsby gerçekten de çalışan bir sunucuya ihtiyaç duymadan bir CDN (İçerik Dağıtım Ağı) üzerinde dağıtılabilecek statik dosyalar üretir, ancak sadece bununla kalmaz. Gatsby, diğer popüler framework'ler gibi dinamik, ölçeklenebilir React web siteleri ve uygulamaları oluşturmak için fazlasıyla donanımlıdır.
Ayrıca yüksek performans, üst düzey güvenlik, SEO dostu olma ve çok sayıda eklentiyi idare etme ihtiyacı gerektiren herhangi bir React projesi için de iyi bir seçimdir.
Gatsby şu anda Snapchat, Tinder ve Revolut gibi şirketler tarafından kullanılmaktadır ve 51.4k Github yıldızına sahiptir.
Next.js, React'in sınırlı olduğu görünüm katmanının ötesine geçen özellikler sunarak React geliştirme deneyimini geliştiren açık kaynaklı bir JavaScript çerçevesidir.
Next.js, bir paketleyici veya derleyici kullanma ihtiyacını ortadan kaldırır. Ayrıca üretim ve SEO optimizasyonuna yardımcı olur ve React uygulamanızı sunucu tarafındaki veri deposuna bağlamak için gereken kod miktarını en aza indirir.
Next.js'nin ölçeklenebilirliği inanılmazdır. Hem tek sayfalık uygulamalar hem de birden fazla dinamik ve etkileşimli sayfadan oluşan büyük kurumsal projeler oluşturmanıza olanak tanır. Bu da Next.js'i hem evrensel hem de esnek kılar.
Next.js, aynı anda hem sunucu tarafından işlenen hem de statik olarak oluşturulan sayfalara sahip hibrit uygulamalar oluşturmak için mükemmeldir. Ayrıca büyük e-ticaret siteleri, web portalları ve geniş bir kullanıcı tabanına sahip siteler için de harika bir seçimdir.
Next.js şu anda Hulu, Twitch ve TikTok gibi şirketler tarafından kullanılmaktadır ve 73,7 bin Github yıldızına sahiptir.
React Router, birden fazla görünüm oluşturmak için kullanılan navigasyon bileşenlerinden oluşan bir yönlendirme kütüphanesidir. Yani, bir kullanıcı sitede her gezindiğinde sayfayı yenileme ihtiyacını ortadan kaldırır. Temel olarak Facebook veya Twitter gibi Tek Sayfalı Uygulamalar için kullanılır. Kullanıcılar farklı sayfalara yönlendirildiklerini düşünseler de aslında tek bir sayfada kalırlar, ancak farklı içerikler görüntülenir.
React Router, Angular veya Rails'de olduğu gibi daha önce değil, uygulamanızın işlenmesi sırasında gerçekleşen dinamik yönlendirmeyi kullanır.
React Router, Ryan Florence ve Michael Jackson tarafından oluşturulmuştur ve şu anda React Training tarafından geliştirilmektedir. Github üzerinde, React Router 44.1k yıldıza sahiptir.
Redux, JavaScript uygulamaları için öngörülebilir bir durum yönetimi kütüphanesidir. Bir uygulamanın tüm durumu için tek bir doğruluk kaynağı oluşturur ve iç içe geçmiş tüm bileşenlerden veri geçirme ihtiyacını ortadan kaldırır. Ayrıca, Angular, Vue, Ember veya Vanilla JavaScript gibi farklı kütüphaneler ve çerçevelerle kullanılabilecek kadar bağımsızdır. Ancak en yaygın olarak React ile kullanılır ve React geliştirme deneyiminin gerekli bir parçası olarak hızla ün kazanmıştır.
Neden bunu kullanayım diye sorabilirsiniz:
React Redux Github'daki 21.4k yıldıza sahiptir.
Redux-Saga, ağ istekleri, global değişkenlerin değiştirilmesi, DOM manipülasyonu gibi yan etkileri yöneten bir ara katman kütüphanesidir. Saf olmayan, yani aynı argümanlar geçildiğinde, her zaman aynı sonucu döndürmeyen fonksiyonlarla çalışırken yan etkiler kaçınılmazdır.
Redux-Saga, bileşenleri yan etkilerden kolayca ayırarak ikincisini yönetmeyi ve takip etmeyi kolaylaştırır, test etmeyi daha da kolaylaştırır ve hataları daha iyi ele alır. Ayrıca çatal modeli sayesinde paralel görevleri aynı anda çalıştırmanıza da olanak tanır. Genel olarak, Redux-Saga size kod üzerinde daha fazla kontrol sağlar.
Redux-Saga kullanmanın bir başka büyük yararı da, sonuçların geri dönüşünü geciktiren eşzamansız işlevler kullanılırken meydana gelen geri aramayı önlemesidir.
Redux-Saga şu anda Github'da 21.9 bin yıldıza sahiptir.