Vite Laravel
Это современный инструмент для минификации и препроцессора файлов стилей и скриптов. При создании приложений с помощью Laravel, Vite обычно будет использоваться для объединения файлов CSS и JavaScript вашего приложения в готовые ресурсы.
Установка
Перед установкой нужно убедиться, что установлен Node и менеджер пакетов npm. Проверить можно с помощью двух команд:
node -v
npm -v
В установке Laravel вы найдете package.json файл в корне структуры каталогов приложения. Файл по умолчанию package.json уже включает в себя все, что нужно для начала работы с Vite.
Установка внешних зависимостей приложения через NPM:
npm install
Настройка
Vite настраивается через vite.config.js файл в корне проекта. Можно настроить этот файл в соответствии с потребностями, а также можете установить любые другие подключаемые модули, необходимые для вашего приложения, такие как @vitejs/plugin-vue или @vitejs/plugin-react.
Плагин Laravel Vite требует, указания точек входа для файлов приложения. Это могут быть файлы JavaScript или CSS, а также предварительно обработанные языки, такие как TypeScript, JSX, TSX, Sass.
Для того, чтобы не создавать хаос у себя на сервере, все файлы, относящиеся к проекту лучше хранить в папке /resources, которая уже создана при установке Laravel. В эту папку вложена папка css, в которую и нужно складывать все файлы со стилями CSS и папка js в которую и нужно складывать все файлы со скриптами JS. Если файлы нужно разделить на группы, можно сделать вложенные папки.
Полный путь до папки со стилями CSS относительно корня папок проекта будет:
/resources/css
Полный путь до папки со скриптами JS относительно корня папок проекта будет:
/resources/js
В файле vite.config.js должны быть перечисленны все файлы которые будут подключаться в проекте:
vite.config.jsimport { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
plugins: [
laravel([
'resources/css/app.css',
'resources/js/app.js',
]),
],
});
Laravel Vite и SPA
Вместо перехода по ссылкам и загрузки новой страницы, при каждом клике по ссылке происходит подгрузка некоторых данных через тот же axios во vue. И тот же vue отвечает за отображение этих данных. SPA это разделение на бэкенд и фронтенд — серверную и клиентскую часть.
SPA — single page application, переводится как одностраничное приложение. Загрузка страницы происходит один раз, а дальше — запрос-ответ. Благодаря этой схеме при первоначальной загрузке грузятся все стили и скрипты которые уже содержат шаблоны в себе, дальнейший обмен с сервером получается достаточно экономичным с точки зрения трафика, что положительно влияет на загрузку сервера и скорость получения данных.
Если вы создаете SPA, включая приложения, созданные с использованием Inertia, Vite лучше всего работает без точек входа CSS:
vite.config.jsimport { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
export default defineConfig({
plugins: [
laravel([
'resources/js/app.js',
]),
],
});
Вместо этого вы должны импортировать свой CSS через JavaScript. Как правило, это делается в resources/js/app.js файле вашего приложения:
resources/js/app.jsimport './bootstrap';
import '../css/app.css';
Загрузка скриптов и стилей
С настроенными точками входа, осталось только указать их в @vite() директиве файлов Blade, которую вы добавляете в шаблон вашего приложения:
resources/views/posts/index.blade.php<!doctype html>
<head>
@vite(['resources/css/app.css', 'resources/js/app.js'])
</head>
Объединение
Для использования библиотеки в своём коде, достаточно импортировать её с применением команды import согласно стандарту ES6, в данном примере знак _ указывает на объект скрипта:
import _ from 'underscore';
Воспользуемся какими-нибудь функциями подключенной библиотеки:
import _ from "underscore";
let arr = [1, 2, 3, 4, 5]
let res = _.first(arr) + _.last(arr);
console.log(res);
Можно импортировать не все функции, а только необходимые:
import {first, last} from "underscore";
let arr = [1, 2, 3, 4, 5]
let res = first(arr) + last(arr);
console.log(res);
Если нужно запустить глобальный код модуля, например для объединения файлов без обращений к метода:
import "owl.carousel";
import "magnific-popup";
import "jquery-match-height";
import "/resources/js/lazyload/jquery.lazyloadxt.extra.js";
import "jquery.cookie";
import "/resources/js/obratnyjotschet/obratnyj-otschet.js";
import "/resources/js/default/scripts.js";
Если нужно сделать глобальную переменную уровня всей страницы, можно явно присвоить её объекту window, тогда получить значение переменной можно обратившись к window.user. Но это должно быть исключением, требующим веской причины:
import _ from "jquery";
window.jQuery = _;
window.$ = _;
Запуск
Есть два способа запустить Vite.
Вы можете запустить сервер разработки с помощью dev команды, которая используется исключительно при локальной разработке. Сервер разработки автоматически обнаружит изменения в файлах и отразит их в открытых окнах браузера, файлы отдаются по отдельности и они не скомпилированы:
npm run dev
Для запуска в режиме продакшен, нужно запускать build команду, которая создаст постоянные версии в папке public/build/assets скомпилированных файлов:
npm run build
Подробная инструкция по Vite.