Web geliştirme hızlı bir şekilde ilerlerken, JavaScript tabanlı üç popüler “front-end” framework dikkatleri çekiyor: ReactJS, Angular ve VueJS. Bu blog yazısında, temel farklılıklarını, avantajlarını ve dezavantajlarını ele alacağız. Amacımız, hangisinin size uygun olduğunu belirlemenize yardımcı olmaktır.
ReactJS, Facebook (Meta) tarafından oluşturulan, bileşen tabanlı bir kütüphanedir (library). Framework değildir, çünkü React sadece “view layer” için sorumludur, geri kalan yapılar genellikle ayrı kütüphaneler eklenerek kullanılır.
React, oldukça sade bir yaklaşım sunar: “sadece gerekli olanlar”. Örneğin, routing (yol yönetimi) veya global state management (tüm uygulamada veri yönetimi) için ayrı “kütüphaneler” eklenir.
React'in en güçlü özelliklerinden biri “Virtual DOM”dur. UI değişmesi gerektiğinde, React önce sanal DOM'da hesaplama yapar, ardından gerçek DOM'da gerekli alanları günceller. Bu genellikle verimliliği artırır.
React nispeten kolay öğrenilir, ancak ek kütüphanelerle (örneğin, React Router, Redux, Redux Toolkit veya Context API) çalışmayı da bilmeniz gerekir.
import React from 'react';
// Küçük bir React bileşeni
function HelloWorld() {
// return içinde birden fazla etiket döndürmek için Fragment veya <> </> kullanılır
return (
<>
<h1>Hello World!</h1>
<p>Bu bir React bileşeni örneğidir</p>
</>
);
}
export default HelloWorld;
Angular, Google tarafından geliştirilen, TypeScript tabanlı tam bir “front-end” framework'tür. Tüm gerekli özellikleri bir arada sunar, yani ayrı kütüphanelerle uğraşmanıza gerek kalmaz.
Angular, “components”, “services”, “modules” gibi önceden belirlenmiş bölümlerle net bir kurallar sistemine sahiptir.
TypeScript, JavaScript'in güçlendirilmiş bir versiyonudur (superset). Angular, bu dilde yazılır, bu da büyük projelerde daha düzenli yapı ve kesin bir tür sistemi sunar.
Angular, geleneksel olarak “two-way binding” ile tanınır. Yani model (data) ve view (UI) birbirini senkronize eder.
Angular, daha çok kurumsal düzeydeki projeler için uygundur, çünkü birçok özellik bir arada sunulur. Ancak bu, karmaşıklığı da artırır.
import { Component } from '@angular/core';
@Component({
selector: 'app-hello-world',
template: `
<!-- Şablonda çift yönlü veri bağlama örneği -->
<h1>Hello World</h1>
<p>Bu bir Angular bileşeni örneğidir</p>
`
})
export class HelloWorldComponent {
// Angular'da TypeScript kullanıyoruz
}
VueJS, Evan You tarafından geliştirilen “progressive” bir framework'tür. “Progressive” denmesinin nedeni, Vue'nun küçük projelerden büyük uygulamalara kadar aşamalı olarak uygulanabilmesidir.
Vue, React gibi minimal bir çekirdeğe sahiptir, ancak resmi eklentiler (routing, global state management – Vuex veya Pinia) çok iyi entegre olmuştur.
Vue'yu mevcut bir projeye eklemek veya sıfırdan başlamak oldukça kolaydır.
Vue, veri izleme ve güncelleme işlemlerinde kendine özgü bir “reactive” sistem kullanır. React'teki Virtual DOM gibi, Vue da Virtual DOM kullanır.
Vue'nun söz dizimi basittir ve yarım gün içinde bile anlaşılabilir bir kullanıcı dostudur.
<template>
<!-- Vue şablonunda verileri {{ }} ile çağırırız -->
<div>
<h1>(Hello World)</h1>
<p>Bu bir Vue bileşeni örneğidir</p>
</div>
</template>
<script>
export default {
name: 'HelloWorld',
data() {
// data, bileşendeki bilgileri tutar
return {
message: 'Vue bileşeninden selam!'
};
}
};
</script>
<style scoped>
/* Scoped style - sadece bu bileşen içinde geçerli */
h1 {
color: #42b983;
}
</style>
Seçiminizi projenizin boyutu, ekibinizin deneyimi ve gelecekteki ölçeklenebilirlik (scalability) dikkate alarak yapın. Her birinin kendine özgü avantajları ve sınırlamaları vardır.