После того, как Вы настроили серверную структуру, Вам необходимо настроить клиентскую структуру. В настоящее время Inertia поддерживает React, Vue и Svelte.
Установите клиентские адаптеры Inertia с помощью NPM или Yarn.
npm install @inertiajs/inertia @inertiajs/inertia-vue3
yarn add @inertiajs/inertia @inertiajs/inertia-vue3
Затем обновите свой основной файл JavaScript, чтобы загрузить приложение Inertia. Все, что мы здесь делаем, это инициализируем клиентскую структуру с помощью базового компонента страницы Inertia.
import { createApp, h } from 'vue'
import { App, plugin } from '@inertiajs/inertia-vue3'
const el = document.getElementById('app')
createApp({
render: () => h(App, {
initialPage: JSON.parse(el.dataset.page),
resolveComponent: name => require(`./Pages/${name}`).default,
})
}).use(plugin).mount(el)
resolveComponent
- это обратный вызов, который сообщает Inertia, как загрузить компонент страницы. Он получает имя страницы (строку) и должен возвращать экземпляр компонента страницы.
Поскольку запросы инерции выполняются через XHR, индикатор загрузки браузера по умолчанию при переходе с одной страницы на другую отсутствует. Чтобы решить эту проблему, Inertia предоставляет необязательную библиотеку progress, которая показывает полосу загрузки всякий раз, когда Вы совершаете посещение Inertia.
Чтобы использовать его, начните с его установки:
npm install @inertiajs/progress
yarn add @inertiajs/progress
После установки инициализируйте его в своем приложении.
import { InertiaProgress } from '@inertiajs/progress'
InertiaProgress.init()
Он также предоставляет ряд опций настройки, о которых вы можете узнать больше на странице индикаторы выполнения.
Чтобы использовать разделение кода с помощью Inertia, Вам необходимо включить динамический импорт. Для этого Вам понадобится плагин Babel. Сначала установите плагин:
npm install @babel/plugin-syntax-dynamic-import
Затем создайте в своем проекте файл .babelrc
со следующим:
{
"plugins": ["@babel/plugin-syntax-dynamic-import"]
}
Наконец, обновите обратный вызов resolveComponent
в инициализации вашего приложения, чтобы использовать import
вместо require
.
resolveComponent: name => import(`./Pages/${name}`).then(module => module.default),
Подумайте об использовании очистки кеша, чтобы заставить браузеры загружать последнюю версию Ваших ресурсов. Для этого добавьте в конфигурацию Вашего веб-пакета следующее:
output: {
chunkFilename: 'js/[name].js?id=[chunkhash]',
}