React, Angular veya Vue: Projeniz için Ne Seçmeli?

Evet yıl 2019 ve StackOverflow geliştirici anketleri sonuçları açıklandı. Bilin bakalım sonuç ne çıktı? Üst üste yedinci yılda da, JavaScript en popüler programlama dili olarak seçildi. Bu yazıda, en popüler üç javascript frameworkünü karşılaştıracağız. Bir sonraki projeniz için hangi frameworkü seçeceğinize karar vermenize yardımcı olacaktır.

 

https://insights.stackoverflow.com/survey/2019#key-results

JavaScript dünyada en çok kullanılan programlama dili olduğundan bu yana, JavaScript Web frameworkleri/kütüphaneleri olan React, Angular ve Vue gibi kütüphaneler oldukça hızla büyüyor.

Ve Kazanan...

React, 2019'da geliştiricilerin en sevdiği ve en çok aradığı web frameworküdür.

https://insights.stackoverflow.com/survey/2019#key-results

React listenin başında yer aldı ve en çok aranan ve en çok sevilen web frameworkü olarak oylandı. Bu yıl Vue tarafından yakından takip ediliyor. Angular ise önceki yıllara göre popülerliğini kaybediyor gibi görünüyor.

https://insights.stackoverflow.com/survey/2019#key-results

React % 21.5 ile zirvede, ardından % 16.1 ile Vue ve % 12.2 ile Angular oldu.

Bugün En Popüler Üç Web Frameworkü

 

Angular, tam anlamıyla gelişmiş bir web frameworktür. Üçü arasında en uzun süredir bulunuyor. Angular, Google tarafından geliştirilmiş ve ilk olarak 2010 yılında piyasaya sürülmüştür. TypeScript tabanlı bir JavaScript frameworküdür. Asıl Eylül 2016’da yayımlanan Angular (sürüm 2 ve üstü, typescript ile kodlanır), AngularJS’in (Ekim 2010’da yayınlanan, javascript ile kodlanır) devamıdır.

React, frontend uygulamaları geliştirmek için kullanılan bir JavaScript kütüphanesidir. React, Facebook tarafından desteklenmekle birlikte 2013 yılında açık kaynak olarak ortaya çıkarılmıştır. Duyurulduğu günden bugüne sürekli popülerlik kazanıyor ve bugün dünyanın en popüler web kütüphanesi olarak yer alıyor. Popülerliğine bakıldığında React'ın Angular'dan daha fazla kullanılmasında Facebook'un bu teknolojide ne kadar büyük bahis oynadığı ve yatırım yaptığı görülmektedir. Ayrıca React üzerinde çalışan özel bir geliştirici ekibide bulunmakta!

Vue, bu bloktaki yeni çocuk adam :) React and Angular'ın aksine Vue, Facebook veya Google gibi hiçbir şirket tarafından desteklenmiyor. Vue, bir grup tutkulu geliştirici tarafından geliştirilmiştir. Hem React hem de Angular öğelerinin bir çok yapısına benzer öğelere sahiptir ve bence her iki dünyanın da en iyisi.

Peki React neden en popüler?

 

"React", "Angular" ve "Vue" terimlerini Google trends uygulamasında hızlıca araştırdım ve Stack Overflow anketiyle aynı sonuçlar çıktı.

Peki neden herkes bu kadar React'ı arıyor? En çok aranan üç web Framework / Kütüphane arasındaki bazı farklılıkları ve benzerlikleri inceleyelim ve React'ın neden herkesin favorisi olduğunu görelim.

1) Performans İçin Virtual DOM Kullanımı

 

Angular:

React'ın ortaya çıkmasından önce, Angular, modern web uygulamaları oluşturmak için JavaScript dilini kullanma yoluna gitmişti. Ayrıca Angular, frontend geliştirmek için gerçek DOM kullandı. 

DOM en basitiyle uygulamanızın kullanıcı arayüzünü temsil eder. Uygulamanızın kullanıcı arayüzünde bir değişiklik olduğunda, DOM bu değişikliği temsil edecek şekilde güncellenir. Tamda burada Angular'ın DOM'u sık sık değiştirmesi, performansı etkileyerek yavaşlatıyor.
 
Sahip olduğunuz UI bileşenleri ne kadar fazlaysa, DOM güncellemeleri o kadar yavaş olur, çünkü UI bileşeninin, her DOM güncellemesi için yeniden oluşturulmaları gerekir.

React:

React ise gerçek DOM'dan çok daha iyi performans gösteren Virtual DOM kullanıyor. Virtual DOM'un kullanımı, React'ı müthiş hızlı kılan temel özelliklerinden biridir. Sanal DOM, DOM'un yalnızca sanal bir temsilidir. Diğer framework ve kütüphanelere kıyasla, Virtual DOM, React'in performans gelişiminin yükselişine oldukça önemli katkıda bulunuyor.

Vue:

Peki Vue ne yaptı? Vue, React'tan sonra ortaya çıktı ve Virtual DOM kavramını React'tan aldı ve esasen React'a benzer bir yaklaşımı var.

2) Esneklik (Flexibility)

 

Angular:

Angular tamamen gelişmiş bir frameworktür demiştik, oysa React sadece bir JavaScript kütüphanesi olarak kabul edilir. Uygulamanızın nasıl yapılandırılması gerektiği konusunda güçlü kalıplar sunar. Aynı zamanda "kullanıma hazır"  çok fazla işlevselliğe sahiptir. Hangi routing kütüphanesini kullanacağınıza veya önemli başka hususlarda karar vermenize gerek kalmadan kodlamaya başlayabilirsiniz. Ancak bir dezavantajı, Angular ile daha az esnekliğe sahip olmanızdır. Yani kalıpların dışına çıkamazsınız.
 

React:

Öte yandan React esnek özellikleri bulunan bir kütüphanedir. Bakış açınıza bağlı olarak bu iyi ve kötü anlaşılabilir. Geliştiriciler React ile kendi yollarını seçebiliyor ve çözümlerini üretebiliyor.

Örneğin, React'ın kendi içerisinde routing mekanizması bulunmuyor, bunun yerine routing için üçüncü parti bir çözüm bulabilirsiniz. Popüler bir routing seçeneği olan React routing, resmi React kütüphanesinin bir parçası değildir. Gelişmiş durum yönetimi (State Management), üçüncü parti kütüphane desteği ile de yapılabilir. Durum yönetimi için Redux, MobX veya başka bir kütüphaneyi kullanabilirsiniz. Bu, React'ın routing, state management vb. mekanizmalar konusunda esnek olduğunu gösterir.

Ancak yeni bir geliştiriciye bu biraz zor gelebilir, çünkü kutudan tavşan çıkarmak yerine bu mekanizmalar için araştırma yapmak zorundalar. Deneyimli geliştiriciler bu esnekliği daha çok seviyorlar, çünkü bu tür seçenekleri kullanmaya daha çok aşinalar.

Vue:

Ayrıca Vue'da esnek bir framewoktür. Ancak, Vue'da, React'tan daha fazla seçenek bulunmaktadır. React'tan farklı olarak Vue, durum yönetimi için Vuex, routing için Vue Router, sunucu tarafında çalışabilmek için Vue Server-Side Renderer gibi seçenekler sunuyor. Vue.js tek başına React gibi sadece bir kütüphane olarak geliyor, ancak Vue Ekosisteminin içerisinde az önce bahsettiğim bir çok add-on bulunuyor.

 React en esnek çözümdür!
Kütüphanelerin esnekliği (flexibility) React'ın yazılım geliştiriciler tarafından daha çok sevilmesinin de bir sebebidir.
 

3) Framework Boyutu

 

Çeşitli framework / kütüphanelerin listesi ve büyüklükleri aşağıda gösterilmektedir.

https://medium.com/dailyjs/javascript-framework-battle-hello-world-in-each-cli-cfdba8bf5e4b

4) Mobil Çözümler

 

Angular:

Ionic

Hibrit mobil uygulamalar geliştirmek için kullanılmakta olan bir frameworktür . Angular ile birlikte gelen bir Cordova altyapısını kullanır. Ionic, hibrit mobil uygulamalar için kurması ve geliştirmesi kolay, sağlam bir UI kütüphanesi sağlar. Ancak, ortaya çıkan uygulama basit bir şekilde native bir web görünümünün içindeki bir web uygulamasıdır. Bu nedenle, uygulamalar yavaş ve gecikmeli çalışabilir.

NativeScript  + Angular

NativeScript, hem iOS hem de Android'de native mobil uygulamalar oluşturmanıza olanak sağlar. Çeşitli frameworkler ile birlikte kullanılabilir. Angular'ı biliyorsanız, native mobil uygulamalar oluşturmak için NativeScript'i kullanabilirsiniz.

NativeScript ekibi, NativeScript ve Angular'ın entegre olmasını sağlamak için Google'daki Angular ekibiyle birlikte çalışır. Bununla iyi performans gösteren native mobil uygulamalar oluşturabilirsiniz. Buradaki tek dezavantaj, NativeScript'in, Angular dünyasındaki en son gelişmelerle sürekli olarak uyum içinde olması gerektiğidir. NativeScript ve Angular iki farklı şirketten gelen iki farklı çözüm olduğundan, NativeScript'in Angular ile uygulama oluşturma desteğini ne zaman durdurabileceğini asla bilemeyiz.

React:

React Native

React'tan doğan mobil çözüm React Native'dir. JavaScript ve React kullanarak native mobil uygulamalar oluşturmak için kullanılır. Bugün birçok büyük şirket mobil işlerinde React Native kullanıyor.

Facebook tarafından destekleniyor ve esasen React kodudur. Bir React geliştiricisi kolayca React Native'i seçebilir, çünkü kodun tümü JavaScript ve React'ta yazılmıştır. Tek fark, web bileşenleri yerine iOS ve Android için native mobil bileşenlerle birlikte gelmesidir.

Native mobil uygulamalar geliştirmek için gelecek vaat eden bir çözüm!

Vue:

Vue-Native

Vue'da mobil için vue-native kullanmaktadır. Vue-nativedeki ilgili ilginç olan şey, esasen React Native'in alt yapısını kullanmasıdır. İşin başında, React Native ayarını yapman gerekiyor. Bu tek başına bir çözüm değil ve React Native olmadan kullanılamaz.

NativeScript+Vue

NativeScript Angular ile kullanılabileceği gibi, Vue ile de kullanılabiliyor. NativeScript ve Vue, native mobil uygulamalar oluşturmanıza olanak sağlar. Yine, buradaki dezavantaj NativeScript'in Vue'deki en son gelişmelere sürekli olarak güncellenmesi gerektiğidir. Farklı ekiplerden ve şirketlerden geldikleri için bu desteğin ne kadar süreceğini asla bilemeyiz.

Bugün, mobil uygulamalar geliştirmek istiyorsanız React en iyi seçimdir. React Native, Angular ve Vue'da bize sunulan diğer seçeneklerin önünde.

Ionic son yaptığı sürüm güncellemesiyle (Ionic4+) Framework içerisinde React ve Vue kullanımına olanak sağladı. Yani artık Ract ve Vue kullanan geliştiriciler Ionic Framework ile de çalışabilecekler!

5) Topluluk ve Geliştirici Katılımı

 

Popülerlik, sürüm sıklığı vb. hakkında daha iyi bir fikir edinmek için üç framework için açık kaynak topluluk katılımına bir göz atalım. GitHub istatistiklerine göre karşılaştıran aşağıdaki tabloya bir göz atın.

Burada dikkat edilmesi gereken Vue’nun, GitHub’ta üçü arasında en fazla yıldıza sahip olmasıdır. Ancak aynı zamanda en az sayıda katılımcıya sahiptir. Bu, insanların Vue ile ilgilendiği, ancak Açık kaynak geliştirme ekibi açısından Angular ve React'ın sahip olduğu ekip kadar ekibe sahip olmadığı anlamına geliyor.

Reacta aynı zamanda en çok katkıda bulunan olduğu görülüyor. Vue ve Angular'dan daha fazla React'e katkıda bulunan (1290) katılımcı var.

Haftalık indirmelerdeki istatistik oldukça ilgi çekici. React, 5.211.991 indirmeyle en fazla haftalık indirmeye sahip. İlginç olan, yeni olmasına rağmen, Vue haftalık 986.335 indirmeyle ikinci sırada geliyor. Burada, Anguların haftalık indirmelere kıyasla çok daha az olduğunu fark edebiliyorsunuz.

Topluluğa ve frameworklerin büyümesine dayanarak, React en üst sırada, Vue geliştiriciler tarafından beğenilmekte ve topluluk katılımcısı az, öte yandan Angular kıvılcımı sönüyor ve yavaşlıyor gibi görünüyor.

Sonuç

JavaScript frameworkleri ve kütüphaneleri her gün gelişiyor. Önümüzdeki yıllarda sabırsızlıkla beklediğiniz çok şey var.  Geliştiriciler, React veya Vue öğrenmek istedikleri kadar, Angular'ı öğrenmek için artık o kadar istekli değiller. Projenizde hangi kütüphane/framework kullanacağınızda yardımcı olmak için aralarında karşılaştırma yapabileceğiniz bilgiler paylaşmaya çalıştım.

Günün sonunda, sağlam frontend uygulamaları oluşturmak için bu frameworklerden herhangi birini ve JavaScript'i iyi anlamanız gerekiyor. Yazımı beğendiyseniz, lütfen paylaşın ve daha fazlası için beni takip etmeyi unutmayın.

Yorum ekle

Loading