Ömer Kaymak
EN
Hakkımda Hizmetler Portfolyo Blog İletişim Projenizi Konuşalım
Blog / laravel-vue-inertia-modern-spa-gelistirme
Vue

Laravel, Vue.js ve Inertia.js ile Modern SPA Geliştirme

Ö
Ömer Kaymak
kaymak.dev
21 Haziran 2026 7 dk okuma

Tek sayfa uygulamaları (SPA - Single Page Application) günümüz web geliştirme dünyasının vazgeçilmez bir parçası haline geldi. Kullanıcılara masaüstü uygulaması benzeri akıcı ve hızlı bir deneyim sunmaları, dinamik arayüzler oluşturma yetenekleri sayesinde popülerlikleri her geçen gün artıyor. Özellikle Laravel gibi güçlü bir backend framework'ü ile Vue.js gibi esnek bir frontend kütüphanesinin birleşimi, geliştiricilere muazzam bir güç katıyor. Ancak bu ikiliyi bir araya getirmenin farklı yolları var. Bu yazıda, geleneksel API tabanlı SPA geliştirme yaklaşımını ve son zamanların popüler çözümü Inertia.js ile SPA geliştirmeyi mimari açıdan karşılaştıracağız.

Geleneksel SPA Yaklaşımı: API Destekli Ayrı Dünyalar

Bu yaklaşım, modern web geliştirmenin en yaygın yöntemlerinden biridir. Laravel, güçlü bir RESTful veya GraphQL API sunucusu olarak görev yaparken, Vue.js ise bu API ile iletişim kuran tamamen bağımsız bir frontend uygulaması olarak çalışır. Her iki tarafın da kendi geliştirme ortamı, bağımlılıkları ve dağıtım süreçleri bulunur.

Nasıl Çalışır?

  1. Backend (Laravel): Veritabanı işlemleri, iş mantığı, yetkilendirme, kimlik doğrulama (genellikle JWT, OAuth veya Laravel Sanctum ile) ve bir API katmanı sağlar. Frontend'den gelen HTTP isteklerine (GET, POST, PUT, DELETE) JSON yanıtları döner.
  2. Frontend (Vue.js): Kullanıcı arayüzünü oluşturur, kullanıcının etkileşimlerini yönetir ve backend API'sine HTTP istekleri (genellikle Axios gibi kütüphanelerle) göndererek veri alır veya gönderir. Frontend yönlendirmesi (Vue Router ile) tamamen client tarafında gerçekleşir.

Avantajları:

  • Tam Ayrışma: Backend ve frontend tamamen birbirinden bağımsızdır. Bu, farklı frontend uygulamalarının (mobil uygulama, farklı web arayüzleri) aynı API'yi kullanabilmesini sağlar.
  • Esneklik: Frontend ekibi istediği teknolojiyi seçebilir (Vue, React, Angular vb.). Backend ekibi de kendi teknolojisine odaklanır.
  • Ölçeklenebilirlik: Her iki katman da bağımsız olarak ölçeklenebilir.
  • Performans: İyi optimize edilmiş bir API ve hafif bir frontend, hızlı yükleme süreleri ve akıcı kullanıcı deneyimi sunabilir.

Dezavantajları:

  • Geliştirme Karmaşıklığı: İki ayrı kod tabanı yönetmek, iki ayrı yönlendirme sistemi (API rotaları ve frontend rotaları), iki ayrı kimlik doğrulama ve yetkilendirme sistemi anlamına gelir. Bu, geliştirme sürecini uzatabilir ve karmaşıklığı artırabilir.
  • Kod Tekrarı: Backend'de yapılan validasyon kurallarının veya yetkilendirme mantığının bazen frontend'de de tekrar yazılması gerekebilir.
  • API Geliştirme Yükü: Her veri işlemi için ayrı API endpoint'leri ve yanıt formatları tanımlamak önemli bir iş yükü oluşturur.
  • SEO Zorlukları: JavaScript ile render edilen içerikler, arama motorları için dizinlenmesi zor olabilir (sunucu tarafı renderlama - SSR çözümleri gerektirebilir).

Inertia.js ile SPA Yaklaşımı: Monolitik SPA'nın Gücü

Inertia.js, geleneksel SPA'ların sağladığı zengin kullanıcı deneyimini, monolitik bir Laravel uygulamasının basitliğiyle birleştiren yenilikçi bir yaklaşımdır. Temel olarak, Laravel'in sunucu tarafı yönlendirme ve controller yapısını korurken, Blade şablonları yerine Vue.js (veya React, Svelte) bileşenlerini kullanmanızı sağlar. API geliştirme yükünü ortadan kaldırır ve tek bir kod tabanıyla SPA deneyimi sunar.

Nasıl Çalışır?

  1. Backend (Laravel): Laravel, hala tüm yönlendirme, controller mantığı, veritabanı işlemleri, validasyon ve yetkilendirmeden sorumludur. Ancak bir HTTP isteği geldiğinde, bir Blade görünümü döndürmek yerine, Inertia.js tarafından anlaşılan özel bir JSON yanıtı döndürür. Bu JSON yanıtı, hangi Vue bileşeninin render edileceğini ve bu bileşene hangi verilerin (props) aktarılacağını belirtir.
  2. Frontend (Vue.js): Inertia.js adaptörü sayesinde, Vue.js uygulamanız gelen JSON yanıtını alır ve belirtilen bileşeni render eder. Sayfalar arası gezinti (link tıklamaları) AJAX istekleri olarak gerçekleşir, ancak kullanıcı bir tam sayfa yenileme hissi yaşamaz. Form gönderimleri de Laravel'in standart form işleme mekanizmalarıyla uyumlu çalışır.

Avantajları:

  • Monolitik Yaklaşım: Tek bir kod tabanı, tek bir yönlendirme sistemi, tek bir kimlik doğrulama/yetkilendirme sistemi. Bu, geliştirme hızını ve bakım kolaylığını artırır.
  • API Geliştirme Yükü Yok: Explicit bir RESTful API oluşturma ihtiyacı ortadan kalkar. Controller'larınız doğrudan Vue bileşenlerine veri gönderir.
  • Kod Tekrarı Yok: Laravel'in form validasyonlarını, yetkilendirme kontrollerini ve diğer backend mantığını doğrudan frontend ile paylaşabilirsiniz. Örneğin, bir form hatası oluştuğunda Laravel'den gelen hata mesajlarını doğrudan Vue bileşeninde gösterebilirsiniz.
  • SEO Dostu: İlk sayfa yüklemesi sunucu tarafında render edildiği için (client-side hydration ile), arama motorları içeriği kolayca dizinleyebilir.
  • Hızlı Geliştirme: Laravel ekosistemine aşina olan geliştiriciler için öğrenme eğrisi düşüktür ve hızlıca MVP'ler oluşturulabilir.

Dezavantajları:

  • Frontend Framework Bağımlılığı: Seçtiğiniz frontend framework'e (Vue, React, Svelte) sıkı bir bağımlılık vardır. Farklı bir frontend teknolojisi kullanmak isterseniz Inertia.js uygun olmayabilir.
  • Tam API Esnekliği: Eğer uygulamanızın halka açık, üçüncü parti entegrasyonlar için kapsamlı bir API sunması gerekiyorsa, Inertia.js doğrudan bu ihtiyacı karşılamaz. Yine de Laravel'in API özelliklerini (örneğin Laravel Sanctum) Inertia.js ile birlikte kullanmak mümkündür, ancak ayrı bir API katmanı oluşturma ihtiyacı tamamen ortadan kalkmaz.

Mimari Karşılaştırma: Hangisi Ne Zaman?

Özellik Geleneksel SPA (API Tabanlı) Inertia.js (Monolitik SPA)
Kod Tabanı İki ayrı (Backend & Frontend) Tek (Monolitik Laravel)
API Gelişimi Zorunlu, ayrı API katmanı Gerek yok, Controller'lar doğrudan veri gönderir
Yönlendirme Backend API rotaları + Frontend Router Sadece Backend rotaları
Kod Tekrarı Yüksek (Validasyon, Yetkilendirme vb.) Minimum (Backend mantığı paylaşılır)
SEO Zorlu (SSR gerektirebilir) Daha kolay (İlk yükleme sunucu tarafında)
Geliştirme Hızı Daha yavaş (API ve frontend entegrasyonu) Daha hızlı (Tek stack, daha az overhead)
Esneklik (Frontend) Yüksek (İstenilen framework seçilebilir) Orta (Vue, React, Svelte ile sınırlı)
Çoklu Client Desteği Mükemmel (Aynı API farklı client'lar için) Daha az uygun (Genelde tek web uygulaması için)

Hangi Yaklaşım Sizin İçin Uygun?

  • Geleneksel SPA (API Tabanlı) Yaklaşımı:

    • Uygulamanızın sadece bir web frontend'i olmayacaksa (örneğin, mobil uygulamalar, üçüncü parti entegrasyonlar için halka açık bir API).
    • Büyük, karmaşık projelerde ekiplerin tamamen ayrılmış sorumluluklarla çalışması tercih ediliyorsa.
    • Frontend ve backend teknolojilerini tamamen bağımsız olarak ölçeklendirme ihtiyacı varsa.
  • Inertia.js Yaklaşımı:

    • Hızlıca bir MVP (Minimum Viable Product) geliştirmek istiyorsanız.
    • Laravel ekosisteminde kalmayı seviyor ve backend'deki tüm yetenekleri (validasyon, yetkilendirme) frontend'de de kullanmak istiyorsanız.
    • Tek bir web uygulaması geliştiriyorsanız ve karmaşık API katmanıyla uğraşmak istemiyorsanız.
    • Geliştirme hızını ve bakım kolaylığını ön planda tutuyorsanız.

Sonuç

Laravel, Vue.js ve modern web geliştirme araçları, geliştiricilere inanılmaz esneklik sunar. Geleneksel API tabanlı SPA yaklaşımı, tam bir ayrışma ve çoklu client desteği gerektiren büyük projeler için güçlü bir seçenektir. Ancak, Inertia.js, Laravel'in gücünü Vue.js'in dinamizmiyle birleştirerek, birçok web uygulaması için geliştirme sürecini büyük ölçüde basitleştiren ve hızlandıran çekici bir alternatif sunar. Her iki yaklaşımın da kendine özgü avantajları ve dezavantajları vardır. Projenizin özel ihtiyaçlarını ve ekip yetkinliklerini göz önünde bulundurarak en uygun mimariyi seçmek, başarılı bir geliştirme sürecinin anahtarı olacaktır.

Ö
Ömer Kaymak
Full-Stack & AI Engineer · kaymak.dev

9 yıllık yazılım deneyimiyle web, mobil ve AI çözümleri geliştiriyor. Laravel, Vue, n8n ve AI entegrasyonu üzerine yazılar yazıyor.