Laravel Türkiye Discord Kanalı Forumda kod paylaşılırken dikkat edilmesi gerekenler!Birlikte proje geliştirmek ister misiniz?

Herkese Merhaba ,
Vue ve Inertia ikilisine bayılıyorum , herhangi bir üyelik paketi (jetstream,breeze gibi ) kullanmasamda laravelde vue ve inertia ikilisi ile kurup devam etmekten yanayım SPA'nın verdiği tat gerçekten çok hoş hatta bir forum konusunda @mgsmus bey laraveli nasıl kullandıgını anlatmış , biraz teknik detay fazlaydı ama kabaca laraveli APİ olarak kullanarak endpointler oluşturarak vs detaylı bir açıklama vermişti forum konusunu unuttum ama çok hoşuma gitmişdi o seviyeye gelmek istiyorum (umarım).

Tekrar @mgsmus beyden bir alıntı yaparak sormak istiyorum , hemen belirteyim konu laravel 8 de apı kullanımıydı ve şöyle bir cevap vermiş

Web sayfasını React, Vue, Angular… gibi bir javascript framework kullanarak hazırlamanız lazım. O yüzden kodlama mantığınız da değişmeli. Blade ile çalışmak ve örneğin Vue ile çalışmak farklı bir mantıkla hareket etmeyi gerektiriyor.

Biraz uzattım üzgünüm ama sormak istediğim doğru yoldamıyım yanlış yoldamıyım sorusu . ? Bir e ticaret sitesi kodlamak istiyorum ancak neredeyse tüm örneklerde Blade ile çalışılmış , örneğin kategori ekleme yada kullanıcı rol ekleme gibi bir sayfanın nasıl olması gerektiği ile ilgili örnek birşeyler aradıgımda karşıma pek SPA çıkmıyor , yok düzeltiyorum çıkıyor ama sadece küçük uygulamalar çıkıyor , komplike bir baştan sona Vue + INERTİA ikilisi tercih edilmiş bir e ticaret sistemi yok yada JEtstream kullanılarak yapılmış tamamlanmış bir uygulama bir video serisi yok olanda çok ufak çaplı örnekler tüm bunlar yüzünden yanlış yolda oldugumu düşünmeye başladım acaba Vue ve Inertia bu tarz kullanım için uygunmu değil yoksa çok yeni diyemi yada uygulamada zorluk oldugu içinmi tercih edilmiyor . ?

    Mustafa abi daha güzel bir cevap verecektir ama ben işin CSR (Client Side Rendering) / SSR (Server Side Rendering) tarafından bakmak istiyorum. Eğer butik bir işletmenin e-ticaret çözümü üretiliyorsa ve SEO önemsenmiyorsa SPA uygulaması yapılarak hızlıca çözüm üretilebilir ama söz konusu SEO olunca çarşı karışıyor. Evet SPA app'ler CSR ile çok hızlı ama arama motorlarına indexleyebileceği bir içerikte vermek gerekiyor. Bu durumda blade öne çıkan seçeneklerden biri çünkü arama motorları henüz CSR konusuna adapte olamadı. Evet Google destekliyor ama otoriter bir site yoksa çok uzun süre renderlenmesini beklemez. Bunun için ciddi bir kaynak ayırması gerekir, crawler geliyor sonuçta.

    Bu durumda CSR ve SSR hibrit bir şekilde kullanmak en mantıklı seçeneklerden biri. Sayfa sunucu tarafında render edilir ve client'a verilir. Arama motoru gelince crawl edebileceği içeri alır gider. Bu hibrit yapının yine ayrı bir kurgusu oluyor. Her senaryoda farklı yaklaşımlar sergilemek gerekebiliyor. Oturum açık mı, değil mi, arama mı yapıyor, query parametreleri nedir vs. İşin içine SSR girince bence laravel en ideal seçenek mi sorguluyorum açıkcası. Sonuçta javascripti çalıştıracak tek bir seçenek var o da NodeJS. Aracı kullanmadan SSR yapmaktan yanayım.

    Bu durumda inertia gibi çözümler yerine saf frontende framework'ü kullanırsak Angular, React, Vue vs. Laravel'i API olarak konumlandırırız ve izole iki çözüm üretmiş oluruz. Frontend framework'üne SSR desteği de sağladık mı tamamdır.

    Inertia SSR destekliyor ve kullanmak tercih meselesi ama frontend ve backend ayrı olacaksa tam olarak ayrılmalı bence. Monolitik çözümlere odaklıysanız Inertia kullanmakta da bir sorun yok.

    isset Öncelikle Jetstream'i listeden çıkaralım. Onunla 2 tane proje yaptım, bana hiçbir şey katmadı hiçbir işimi de kolaylaştırmadı ve beni sınırlandırdı. Çok zorlasam 1 günde yapabileceğim bir şey. Bence gereği yok, sadece kafa karıştırıyor.

    tl;dr
    Küçük ve orta ölçekli, tek yada 2 kişilik bir ekiple geliştirilebilecek, çok komplike UI işleri gerektirmeyen, büyük çoğunluğu CRUD üzerine dayalı bir uygulama için Inertia uygun ama API olarak 1. (mobil/masaüstü) ve 3. parti istemcilere açılacak, ekip gerektiren büyük işler için ileride sizi pişman eder. Her ne kadar Inertia'yı çok beğensem de tecrübelerim beni API yazmaya itiyor.

    API yazmanın avantajları:

    • Backend bağımsız olacağı için geliştirme ve deployment frontendden bağımsız ilerleyebilir. Ayrı takımlar halinde projeyi geliştirebilirsiniz.
    • Frontend ekibinin backend bilgisine ve geliştirme ortamına ihtiyacı olmaz, backendden bağımsız ilerleyebilir.
    • Frontend istenilen teknolojide yazılabilir, sonradan değiştirilebilir. Bu API tarafı için de geçerli; frontend değişmeden API değişebilir.
    • Masaüstü ve mobil uygulamalar API değişmeden yazılabilir.
    • Aynı API diğer istemcilere verilebilir, ayrı bir işlem yapmanıza gerek kalmaz.
    • Doğru kodlandığında frontend üzerinden yük azalır ve frontend sadece view olarak hizmet eder (Bu aslında Blade ve Inertia için de geçerli).

    API yazmanın dezavantajları:

    • Session kullanamayacaksınız. Bazı işlemler session ile çok basit iken session olmayan ortamlarda zor olabilir.
    • Vue/React gibi bir framework kullanacağınız için javascript bilgisine daha fazla ihtiyacınız olacak ya da ekstra insan gücü gerektirecek.
    • API versiyonlama, API dokümantasyon, API gateway gibi kavramlar devreye girecek.

    Inertia yazmanın avantajları:

    • Hem session kullanabileceksiniz hem de javascript frameworklerin nimetlerinden faydalanabileceksiniz.
    • Uygulamanız SPA olarak çalışacağı için daha iyi bir deneyim sunacak.
    • Klasik MVC rahatlığını yaşayabileceksiniz.
    • Emin olmamakla birlikte daha hızlı ilerleyeceğinizi söyleyebilirim.

    Inertia yazmanın dezavantajları:

    • Ekip üyelerinin fullstack olması gerekecek. Her iki tarafta da bilgi sahibi olmaları beklenecek.
    • Sadece backend deploy mümkün olmayacak, herhangi bir yerdeki bir değişiklik için tüm uygulama deploy edilecek.
    • Tek bir frontend teknoloji seçebileceksiniz, sonradan bunu değiştirmek zor olacak ve değişikliği paralelde yapamayacaksınız. Uygulamanın ayrı bir klonu ile yapmak zorunda kalacaksınız. API olsaydı çalışan uygulamaya bir yandan ayrı bir frontend yazılabilirdi.
    • Masaüstü ve mobil uygulama yazamayacaksınız, bunun için ayrı API yazmanız gerekecek. Bu da mimaride değişiklik ya da kod çoğaltma gibi durumlara sebep olacak.
    • JS frameworkün tüm özelliklerinden faydalanamayacaksınız, örneğin vue-router'ın keep-alive özelliği.