Laravel + Vue

Кусок vue в шаблоне blade

1. composer create-project laravel/laravel . 10

2. vite.config.js должен быть таким.

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import vue from "@vitejs/plugin-vue";

export default defineConfig({
plugins: [
laravel({
input: ['resources/css/app.css', 'resources/js/app.js','resources/js/SomePieceOfCode/app.js'],
refresh: true,
}),
vue({
template: {
transformAssetUrls: {
base: null,
includeAbsolute: false,
},
},
}),
],
});


В поле "input" должны быть все ресурсы всех кусков кода vue.js

3. В routes/web.php

Route::get('/test-vue', function () {
return view('test-vue');
});


4. npm install

5. npm i @vitejs/plugin-vue@4

6. resources/views/test-vue.blade.php

<div id="some_element"></div>
@vite('resources/js/SomePieceOfCode/app.js')


7. resources/js/SomePieceOfCode/app.js

import App from './App.vue'

import { createApp } from 'vue'

const app = createApp(App)
app.mount('#some_element')


8. resources/js/SomePieceOfCode/App.vue

<template>
<h1>Some piece of code</h1>
</template>


9. npm run dev

10. на сервере

npm run build

11. Как передавать параметры во vue расписано здесь https://laravel.demiart.ru/four-ways-to-pass-data-from-laravel-to-vue/

<template>
<div v-if="showSecretWindow">
<h1>Это секретное окно, никому не говори!</h1>
</div>
</template>
<script>
export default {
computed: {
showSecretWindow() {
return window.showSecretWindow;
}
}

}