AytaGn
{
"component": "Event",
"props": {
"event": {
"id": 80,
"title": "Birthday party",
"start_date": "2019-06-02",
"description": "Come out and celebrate Jonathan's 36th birthday party!"
}
},
"url": "/events/80",
"version": "c32b8e4965f418ad16eaebba1d4e960f"
}
/events/80 adresine istekte bulunduğunuzda bu şekilde bir yanıt alıyorsunuz. Inertia bu data ile resources/js/Pages/Event.vue sayfa bileşenini render ediyor. Yani düz Vue ile yapsaydınız şu şekilde olacaktı:
const router = new VueRouter({
routes: [
{ path: '/events/:id', component: Event }
]
})
Siz SSR istiyorsunuz. Yani sayfaya girildiğinde DOM manipülasyonu yapıp sonucu göstermek yerine manipülasyon yapılmış halini direkt basmak. Inertia kullandığınızda üstteki çıktıyı şöyle alırsınız mesela:
class EventController
{
public function show($id)
{
$event = Event::select([
'id',
'title',
'start_date',
'description'
])->findOrFail($id);
return Inertia::render('Event', [
'event' => $event
]);
}
}
Bu durumda Inertia::render() çalıştığında Javascript ile önce render işlemini yapmalı, sonucu almalı ve daha sonra ekrana basmalısınız. Yani PHP ile Javascript çalıştıracaksınız. https://github.com/phpv8/v8js gibi bir şeye ihtiyacınız olacak ve Inertia sınıfını genişletip bunu yapan bir yöntem ekleyeceksiniz ya da render yöntemini değiştireceksiniz.
Bana kalırsa adamların dediğine (https://inertiajs.com/server-side-rendering) uymak lazım. SSR sizin için öncelikli ise Laravel + Vue/React ile ilerleyin. Amacınız SEO ise ve Inertia kullanmak istiyorsanız pre-rendering olayına bakın.