
Merhabalar,
Gelişen yazılım teknolojileriyle beraber, uygulama geliştirme teknolojileri de uzun zamandır değişti. Bu değişimlerde en iyi çıkan özelliklerden bir tanesi SPA teknolojisi. SPA'lar ile proje geliştirmek kolaylaşırken, maliyetlerde aynı oranda düştü. Türkiye'de ve dünyada SPA teknolojisi çok fazla benimsendi. LinkedIn başta olmak üzere birçok alanda iş ilanları SPA'lar üzerine açılıyor. Javascript'in gelişimiyle beraber buraların yeşillenmesi çok güzel oldu. Bugün modern SPA üçlüsünün(React, Angular, Vue) iki ayağını inceleyeceğiz. React ve Angular'ı incelemek ve karşılaştırmak için yazıyı okumaya devam edebilirsiniz.
Bu arada geçtiğimiz günlerde PHP ve NodeJS'i karşılaştırdım. Onu da inceleyebilirsiniz. 🔍 NodeJS vs. PHP - Karşılaştıralım Bilgilenelim Öğrenelim ✏️
SPA Nedir ?
SPA açılım olarak Single Page Application anlamına gelir. Türkçe'de tek sayfa uygulama denilebilir. SPA'ların amacı tek sayfa üzerinden uygulamayı/projeyi hareketlendirmek demektir. Detaylı bir açıklaması olsa da en basit anlatımı ile: örneğin bir uygulamanız var. Bu uygulamada header ve footer alanı var. SPA'larda doğru planladığınızda header ve footer değişmeden, content kısmının değişmesini sağlayabilirsiniz. Bu özellik size bir anlam ifade etmiyor olabilir. Daha da açmak gerekirse: bir user'ı auth ettiniz Front-End'de. Aldığınız user belgelerini Front-End'de, SPA'da tutarak bir daha Auth almanıza gerek kalmaz. Bu sayede hem render yapıp kullanıcıların bilgisayarlarını yormazken, Back-End'e gereksiz istek atıp orayı da yormanıza gerek kalmaz.
Bu özellikler sizin için bir anlam ifade etmiyor olabilir yine de. Detaylara giriş yaptığınızda, SPA'nın faydaları saymakla bitmiyor. O yüzden geleneksek geliştiricilere tavsiyemdir: SPA'ya geçiş yapın.

Angular Nedir ?
Angular Google tarafından 2009 yılında oluşturulmuş Javascript framework yapısıdır. Typescript ile hazırlanan Angular, Real DOM üzerine çalışır. Hala güncellemeleri devam eden Angular, şu anda stabil 15. versiyondadır.
ReactJS Nedir ?
2013 yılında Facebook tarafından üretilen ReactJS, şu anda en popüler iki SPA'dan biridir.(Diğeri Vue) Angular gibi Javascript ile geliştirilen ReactJS, sanal DOM üzerinden çalışır. ReactJS bu yazıyı yazarken 18. versiyondadır.

ReactJS'in Avantajları
- Flex bir yapıdadır. Siz nasıl geliştirmek isterseniz o hali alabilir. Size zorlamalar yapmaz.
- Öğrenme süreci rahattır. HTML, CSS ve JS ile çok fazla dökümantasyon okumadan aşina olabilirsiniz.
- Konfigüre edilmesi ve geliştirme süreçleri rahattır.
- Dökümantasyonları kolay ve anlaşılabilir haldedir.
- Versiyonlar arasında tabiri caizse "Osmanlı'nın Türkçe'ye geçişi" gibi bir tavır bulunmaz. React'in yeni sürümlerinde eski fonksiyonlar çalışır ama kullanılması önerilmez.
- HTML yazmaktan çok farkı yoktur.
- React Native ciddi fark oluşturur. React Native ile IOS ve Android'e uygulama geliştirebilirsiniz. ReactJS bilen bir geliştirici kolaylıkla React Native'e adapte olabilir.

Angular'ın Avantajları
- Birçok parametre ve kütüphaneyi kendi içerisinde bulundurur. React'ta birçok şeyi dışarıdan(NPM, Yarn) yüklemeniz gerekir.
- Angular temelinde MVC yapısı bulundurur. Kendinizin bu yapıyı oluşturmanıza gerek yoktur.
- Başlangıcı iyi yaptığından ve standartlaştırdığından dolayı karmaşık projelerin başlangıcı rahattır.
Sonuç
İlk SPA'ya yöneldiğimde Angular'ı tercih etmek istemiştim. Kısa bir süreç yaşadığım Angular'da şöyle bir problem yaşamıştım: bir hata söz konusuydu ve bunu çözmeye çalışıyordum. Dökümanlar, forumları araştırdığımda çözümler vardı ama benim kod yapımla alakası yoktu. Bunu biraz araştırdığımda versiyonlar arasında büyük çaplı değişiklikler yaşanmasından dolayıymış. Yani Angular 2'de bir parametre kullanıyorsan, Angular 3'te farklılaşıyormuş bu durum. Bu gerçekten sıkıntılı bir hal. Deneyimleyip, bunu gördüğümde Angular'dan vazgeçmiştim. Angular'a daha fazla avantaj yazmak isterdim ama gerçekten araştırdığınızda bu durum böyle. Performans farkı konusunda ikisinin arasında fark yok.
ReactJS'in Angular'dan eksik gözüken noktaları, doğru planlamalar ile yapılabiliyor. Sonuç olarak sizde ReactJS'i serbestliğinden dolayı bir Framework haline getirebiliyorsunuz. Bunlar Angular'da sabit. En basitinden State Management'i ReactJS'e kurmanız gerekir. Bu Angular'ın içerisinde vardır. Veya Angular'ın Real DOM yapısı, NextJS ile React'e implemente edilebiliyor.
Ek olarak React'ın Native olayı çok başka bir kapıyı aralıyor. ReactJS'i öğrenen bir geliştirici, rahatlıkla Native aşamasına geçebilir. Bu sayede IOS ve Android için uygulamalar gerçekleştirebilir. Bu yazı biraz karşılaştırma değilde, Angular'ı gömmek gibi oldu. Bunu yapmamak için elimden geleni yaptım ama maalesef her şey ortada
Umarım konuyu okuyanlar için güzel bir yazı olmuştur. Okuduğunuz ve yorumlarınız için teşekkürler