Установка AlpineJS по умолчанию в проекте Sail Livewire

Мой вопрос возникает из простого любопытства, поскольку я хотел бы иметь контроль над версиями зависимостей моего проекта. Недавно я начал работать над проектом laravel/livewire, установленным с помощью Sail. Я заметил, что есть некоторые функции пользовательского интерфейса, которые гораздо лучше обрабатываются облегченной средой js, поэтому я остановился на AlpineJS. Я установил его с помощью npm, и все работало нормально, пока в какой-то момент я не начал получать странные неперехваченные ошибки исключений. Посмотрев вокруг, во многих местах решением было убедиться, что AlpineJS не загружается несколько раз. Поэтому я удалил свою регистрацию Alpine из app.js, и, к моему удивлению, все по-прежнему работало как положено, без ошибок. Я пытался найти источник установки AlpineJS, но не смог ее найти. В проекте нет тегов сценариев и нет импорта с использованием URL-адреса CDN. Интересно, установлен ли он каким-то глобальным образом в контейнере (хотя он все равно должен где-то инициализироваться).

Есть ли здесь какой-нибудь гуру livewire/alpinejs, который мог бы сказать мне, где искать, или дать мне представление о том, как это работает?

Это не конец света, но, как я уже сказал, я хотел бы иметь контроль над тем, какая версия alpinejs будет использоваться после развертывания. А также полезно знать, как работают определенные вещи в рамках. Спасибо.

проверьте композитор.json или package.json (скорее всего, package.json)

Mr. Kenneth 17.04.2024 02:07

Если вы найдете там alpine, проверьте соответствующий файл lock.json, чтобы проверить текущую установленную версию.

Mr. Kenneth 17.04.2024 02:08
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Оживление вашего приложения Laravel: Понимание режима обслуживания
Оживление вашего приложения Laravel: Понимание режима обслуживания
Здравствуйте, разработчики! В сегодняшней статье мы рассмотрим важный аспект управления приложениями, который часто упускается из виду в суете...
Коллекции в Laravel более простым способом
Коллекции в Laravel более простым способом
Привет, читатели, сегодня мы узнаем о коллекциях. В Laravel коллекции - это способ манипулировать массивами и играть с массивами данных. Благодаря...
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Поиск нового уровня в Laravel с помощью MeiliSearch и Scout
Laravel Scout - это популярный пакет, который предоставляет простой и удобный способ добавить полнотекстовый поиск в ваше приложение Laravel. Он...
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
0
2
169
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Livewire v3 поставляется с установленным по умолчанию Alpinejs. Однако вы можете загрузить его вручную.

Для этого вам необходимо добавить директиву @livewireScriptConfig в файл макета (resources/views/components/layouts/app.blade.php):

<html>
<head>
    <!-- ... -->
    @livewireStyles
    @vite(['resources/js/app.js'])
</head>
<body>
    {{ $slot }}
 
    @livewireScriptConfig 
</body>
</html>

Когда Livewire обнаружит директиву @livewireScriptConfig, он воздержится от внедрения сценариев Livewire и Alpine. Если вы используете директиву @livewireScripts для загрузки Livewire вручную, обязательно удалите ее. Обязательно добавьте директиву @livewireStyles, если ее еще нет.

Последний шаг — импорт Alpine и Livewire в ваш файл app.js, что позволит вам зарегистрировать любые пользовательские ресурсы и, в конечном итоге, запустить Livewire и Alpine. Вы также можете установить предпочитаемую версию Alpinejs через npm и импортировать ее в app.js, как показано:

import { Livewire, Alpine } from '../../vendor/livewire/livewire/dist/livewire.esm';
import Clipboard from '@ryangjchandler/alpine-clipboard'
 
Alpine.plugin(Clipboard)
 
Livewire.start()

Это совместимо только с Vite, но не с миксом Laravel.

Документы Livewire

Спасибо, Дидвиз, теперь это имеет смысл. Однако загружать зависимость javascript из папки поставщика не очень идеально, им следовало бы придумать лучшее решение, чтобы отсоединить ее от livewire, но это только мое мнение.

domjanzsoo 19.04.2024 01:27

Другие вопросы по теме