Laravel-mix
Laravel Nova bestaat ondertussen al een langere tijd en Laravel Mix werd in die tijd nooit geüpdatete, daardoor is er nu een grote inhaalbeweging gedaan van v1 naar v6.
Tailwind 3
In Nova 3.0 wordt nog gebruikt gemaakt van Tailwind CSS 0.6.0, ook hier komt een upgrade: Tailwind CSS 3!
Inertia.JS
Inertia implementeert een nieuwe benadering voor het bouwen van klassieke server-driven web-apps.
Dankzij Inertia wordt het mogelijk om volledig client-side rendered, single page apps te maken zonder veel complexiteit met zich mee te brengen dat meestal wel meekomt met moderne SPA’s . Het doet dit door gebruik te maken van bestaande server-side frameworks.
Inertia heeft geen routing aan de client-side en er is ook geen API voor nodig. Bouw eenvoudig controllers en page views zoals u altijd hebt gedaan!
Not a framework
Inertia is geen framework en het is ook geen vervanging voor uw bestaande framework aan de server- of client-side. Het is eerder ontworpen om met hen samen te werken. Zie Inertia als lijm die de twee verbindt. Inertia doet dit via adapters. Er zijn momenteel drie officiële client-side adapters (React, Vue en Svelte) en twee server-side adapters (Laravel en Rails).
Concreet voorbeeld in Nova 4.0
Het gebruik van Inertia.js zal je vooral merken als je custom tools hebt/gaat maken die gebruik maken van de Vue router.
Nova heeft hierbij dus de Vue router vervangen door Inertia.js. Hiedoor zal je bij de upgrade naar 4.0 en hoger custom tools moeten gaan migraten van Vue routes naar het registreren van Inertia page components en backend routes.
Als voorbeeld hebben we een Nova 3 Vue router registratie:
// In tool.js...
Nova.booting((Vue, router) => {
router.addRoutes([
{
name: 'sidebar-tool',
path: '/sidebar-tool',
component: require('./components/Tool'),
},
])
})
Wanneer we naar Nova 4 upgraden, zal je de tool components moeten registeren als volgt:
// In tool.js...
Nova.booting((Vue) => {
Nova.inertia('SidebarTool', require('./component/Tool').default)
})
Wanneer je Vue component geregistreerd is, zal je een server-side route moeten definiëren voor je tool om je component te kunnen renderen:
// In je ToolServiceProvider.php...
use Laravel\Nova\Nova;
Nova::router()
->group(function ($router) {
$router->get('sidebar-tool', function ($request) {
return inertia('SidebarTool');
});
});