DEV Community

Cover image for How to use vue inertia in laravel project ?
5ᗩᒪEᗪ 🦇
5ᗩᒪEᗪ 🦇

Posted on • Edited on

2 1

How to use vue inertia in laravel project ?

Inertia is a small library that allows you to Build single-page apps, without building an API.

First, use this command to create a laravel project:

composer create-project --prefer-dist laravel/laravel inertia-app

OR you can define the laravel version you need, here for example i will use laravel 8 by running this command

composer create-project --prefer-dist laravel/laravel:8.6.11 inertia-app

Sitting up the inertia is divided into two stages:

  • server-side
  • client-side

1- Server Side

After creating laravel project you need to install inertia using this command:

composer require inertiajs/inertia-laravel

and now, create a layout file in recourses\view\app.blade.php and add this into this file:

<!DOCTYPE html>
<html>
<head>
<meta charset=”utf-8" />
<meta name=”viewport” content=”width=device-width, initial-scale=1.0, maximum-scale=1.0" />
<link href=”{{ mix(‘/css/app.css’) }}” rel=”stylesheet” />
<script src=”{{ mix(‘/js/app.js’) }}” defer></script>
@inertiaHead
</head>
<body>
@inertia
</body>
</html>
Enter fullscreen mode Exit fullscreen mode

After that you need to create inertia middleware using this command:

php artisan inertia:middleware

and don't forget to register the middleware in the App\Http\Kernel by adding this :

‘web’ => [
// …
\App\Http\Middleware\HandleInertiaRequests::class,
],
Enter fullscreen mode Exit fullscreen mode

2- Client-Side

First, install the dependencies by this command:

npm install @inertiajs/inertia @inertiajs/inertia-vue3

Second install vue.js:

npm install vue@next

[optional — recommended] if you use vue 3 and you need to use single-file component (SFC) which allows you to use <template>, <scripts>, and <styles> on one page, you need to run this command:

npm install -D @vue/compiler-sfc

Now in the resources\js\app.js file add this code:

import { createApp, h } from ‘vue’
import { createInertiaApp } from ‘@inertiajs/inertia-vue3’
createInertiaApp({
resolve: name => require(`./Pages/${name}`),
setup({ el, App, props, plugin }) {
createApp({ render: () => h(App, props) })
.use(plugin)
.mount(el)
},
})

Enter fullscreen mode Exit fullscreen mode

Also don’t forget to create a Pages folder inside resources\js\, this Page folder will be used to create .vue files inside it.

After that you need to update to code in (webpack.mix.js) by adding ( .vue(3) & .version() ), so it will be like that:

mix.js(‘resources/js/app.js’, ‘public/js’)
.vue(3)
.postCss(‘resources/css/app.css’, ‘public/css’, [
//
])
.version();
Enter fullscreen mode Exit fullscreen mode

now install any remaining dependencies by running:

npm install

then, to pull in any required dependencies you have run this command:

npx mix

you may be asked to run npx mix again

Now, an Error may occur when you run npx mix that asks you to Use — location=global instead

in this case, run this command:

npm i vue-loader

Now run npx mix again:

npx mix

That were the steps of setting up vue inertia in laravel project, I hope it was helpful 🥰.

Sentry image

See why 4M developers consider Sentry, “not bad.”

Fixing code doesn’t have to be the worst part of your day. Learn how Sentry can help.

Learn more

Top comments (0)

Image of Timescale

Timescale – the developer's data platform for modern apps, built on PostgreSQL

Timescale Cloud is PostgreSQL optimized for speed, scale, and performance. Over 3 million IoT, AI, crypto, and dev tool apps are powered by Timescale. Try it free today! No credit card required.

Try free