User Tools

Site Tools


laravel-mix-vuejs

Laravel + VueJS + Laravel Mix

Установка и настройка SPA

Для работы вам потребуется composer, php, nodejs, npm

В этой статье я не буду рассказывать как установить PHP, nodejs, npm

Установка Laravel

composer create-project laravel/laravel laravel-mix

Установка VueJS

npm i vue

Установка всех зависимостей

npm install

Установка bootstrap

npm install bootstrap

После установки, ваш файл package.json должен выглядеть примерно таким образом:

Настройка приложения

!!!В этом приложении маршрутизация будет не на стороне Laravel, в файле web.php напишем единую точку входа:

Route::get('/{any}', 'SpaController@index')→where('any', '.*');

Все остальные пути будут через пакет Vue Router

Далее создаем контроллер:

php artisan make:controller SpaController

и пишем туда:

<?php

namespace App\Http\Controllers;

use Illuminate\Http\Request;

class SpaController extends Controller
{
    public function index()
    {
        return view('index');
    }
}

След.шагом создаем сам файл index.blade.php в дерриктории resources/views/

наполняем его след.содержимым:

<!doctype html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport"
          content="width=device-width, user-scalable=no, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0">
    <meta http-equiv="X-UA-Compatible" content="ie=edge">
    <title>SPA Laravel</title>
    <link rel="stylesheet" href="{{mix('css/app.css')}}">
</head>
<body>
    <div id="app">
        <app></app>
    </div>
<script src="{{mix('js/app.js')}}"></script>
</body>
</html>

Весь javascript будем писать в resources/js/app.js

require('./bootstrap');

import Vue from 'vue'

Vue.component('app', require('../components/App').default)

const app = new Vue({
    el: '#app',
})

Так же надо настроить webpack.mix.js, который должен лежать в корне проекта:

const mix = require('laravel-mix');

/*
 |--------------------------------------------------------------------------
 | Mix Asset Management
 |--------------------------------------------------------------------------
 |
 | Mix provides a clean, fluent API for defining some Webpack build steps
 | for your Laravel applications. By default, we are compiling the CSS
 | file for the application as well as bundling up all the JS files.
 |
 */

mix.js('resources/js/app.js', 'public/js').vue();
mix.css('resources/css/app.css', 'public/css').vue();

Внимание! Чтобы использовать Laravel Mix с VueJS, необходимо дописать к подключаемым файла .vue() (см.выше на код)

Следующим шагом будет создание файла resources/components/App.vue

<template>
    <div class="container">
        <h1>Qsoft Company</h1>
    </div>
</template>

<script>
export default {
    name: "app"
}
</script>

<style scoped>

</style>

Запуск и проверка

php artisan serve

npx mix

http://joxi.ru/l2Zy3dEcR7GpOm

Ссылки

Этот проект на Github https://github.com/Chifek/Laravel-VueJS-Laravel-Mix

Офф.сайт Laravel Mix https://laravel-mix.com

laravel-mix-vuejs.txt · Last modified: 2023/09/14 06:06 by 127.0.0.1