В данной статье рассматривается способ подготовки SPA-приложения для дальнейшей разработки с использованием Laravel 8 и Vue 3.
Вообще, Laravel из коробки поддерживает работу с Vue, с помощью своей надстройки над webpack'ом под названием mix. Но там Vue ориентирован больше на использование в качестве библиотеки: можно создавать компоненты, пихать их в blade шаблоны и все будет работать. При этом Laravel используется как основное приложение. В таком случае, можно не запариваться и использовать mix и стандартные средства использования Vue в Laravel.
Здесь же предлагается вариант когда laravel используется лишь как API, а всю работу по маршрутизации, шаблонизации и т.д. выполняет Vue.
Перед началом работы, нужно убедиться в следующем:
- Глобально установлен
composer
- Установлен node js и, в частности,
npm
Установка Laravel 8
- Выбираем директорию для будущего проекта
cd path/to/project.loc
. - Запускаем установку laravel
composer create-project laravel/laravel projectdir --prefer-dist
. Заменяем projectdir на своё. - Выпиливаем из laravel - mix и другие директории, касающиеся фронта:
- package.json
- package-lock.json
- resources/js
- webpack.mix.js
- public/css
- public/js
и прочие папки, которые посчитаете относящиемися к фронту
Установка Vue 3
- Устанавливаем глобально Vue CLI -
npm install -g @vue/cli
. Это специальная платформа Vue, которая позволяет генерить проекты на Vue. У нее даже есть свой интерфейс для контроля проектов, установки плагинов и пр. полезных фишек. Подробнее в доках по Vue CLI. С помощью нее мы и сгенерим проект Vue внутри проекта Laravel. - Создаём папку в проекте -
frontend
. - Переходим в эту папку в консоли -
cd frontend
. - Устанавливаем с помощью ранее установленного Vue CLI проект -
vue create app .
. Убязательно указываем точку, чтобы не создавалась папка т.к. мы уже эту папку создали. - Конфиг для установки на скринах:
Примечание. ESLint по желанию. Иногда его тяжко подружить с IDE!
- Добавляем файл в корень папки
frontend
-vue.config.js
и добавляем туда содержимое:module.exports = { // proxy API requests to Valet during development devServer: { proxy: 'http://laracon.test' }, // output built static files to Laravel's public dir. // note the "build" script in package.json needs to be modified as well. outputDir: '../public', // modify the location of the generated HTML file. // make sure to do this only in production. indexPath: process.env.NODE_ENV === 'production' ? '../resources/views/index.blade.php' : 'index.html' }
proxy
под свой. Это параметр, относительно которого будут отправляться запросы на API, например, с помощьюaxios
. - Редактируем
package.json
:"build": "rm -rf ../public/{js,css,img} && vue-cli-service build --no-clean",
С этого момента можно запускать приложение из папки frontend
с помощью npm run serve
и вести разработку. На Laravel пишем все роуты в файле routes/api.php
. Обращение к этим проутам происходит через http://localhost:8080/api/
.
Можно посмотреть оригинал видео, откуда была взята большая часть материала: