Laravel 和 Inertia 在 Vue 中创建路由
Laravel and Inertia create route inside Vue
我安装了 Laravel 和 Inertia。我把这个放在里面 resources/js/app.js
:
require('./bootstrap');
// Import modules...
import { createApp, h } from 'vue';
import { App as InertiaApp, plugin as InertiaPlugin } from '@inertiajs/inertia-vue3';
import { InertiaProgress } from '@inertiajs/progress';
const el = document.getElementById('app');
createApp({
render: () =>
h(InertiaApp, {
initialPage: JSON.parse(el.dataset.page),
resolveComponent: (name) => require(`./Pages/${name}`).default,
}),
})
.mixin({ methods: { route } })
.mixin(require('./translation'))
.use(InertiaPlugin)
.mount(el);
InertiaProgress.init({ color: '#4B5563' });
如您所见,有 .mixin({ methods: { route } })
。我可以使用 this.route('name.of.route')
从 ˙routes` 文件夹生成命名路由。
我想修改route
方法每次生成路由时默认添加前缀。如何调整 Inerta 的 route
方法。
With Inertia all routing is defined server-side. Meaning you don't
need Vue Router or React Router. Simply create routes using your
server-side framework of choice.
您可以在此处阅读更多相关信息 (https://inertiajs.com/routing#top)
由于 ziggy library,您已经在 javascript 上安装了所有可用的路线。它提供了一个 JavaScript route()
辅助函数,其工作方式与 Laravel 类似,使您可以轻松地在 JavaScript.[=20= 中使用您的 Laravel 命名路由]
要修改或向 URL 添加前缀,您必须使用中间件或 Route Groups 从后端 (Laravel) 执行此操作,因为 Ziggy 不会创建URL,它只是提供您在 Laravel 的 web.php 文件中定义的 URL 到 Javascript.
这就是为什么您的根 blade 文件中有 @routes
。如果删除它,this.routes
或 this.$routes
将不可用。
例如
Route::group(['prefix' => 'u'], function () {
Route::inertia('/dashboard', 'Dashboard')->name('dashboard');
});
这意味着此 URL 将在 /u/dashboard
可用,您可以使用 Javascript 作为 this.route('dashboard');
或阅读有关 ziggy 包的更多信息以获得您想要的结果
我安装了 Laravel 和 Inertia。我把这个放在里面 resources/js/app.js
:
require('./bootstrap');
// Import modules...
import { createApp, h } from 'vue';
import { App as InertiaApp, plugin as InertiaPlugin } from '@inertiajs/inertia-vue3';
import { InertiaProgress } from '@inertiajs/progress';
const el = document.getElementById('app');
createApp({
render: () =>
h(InertiaApp, {
initialPage: JSON.parse(el.dataset.page),
resolveComponent: (name) => require(`./Pages/${name}`).default,
}),
})
.mixin({ methods: { route } })
.mixin(require('./translation'))
.use(InertiaPlugin)
.mount(el);
InertiaProgress.init({ color: '#4B5563' });
如您所见,有 .mixin({ methods: { route } })
。我可以使用 this.route('name.of.route')
从 ˙routes` 文件夹生成命名路由。
我想修改route
方法每次生成路由时默认添加前缀。如何调整 Inerta 的 route
方法。
With Inertia all routing is defined server-side. Meaning you don't need Vue Router or React Router. Simply create routes using your server-side framework of choice.
您可以在此处阅读更多相关信息 (https://inertiajs.com/routing#top)
由于 ziggy library,您已经在 javascript 上安装了所有可用的路线。它提供了一个 JavaScript route()
辅助函数,其工作方式与 Laravel 类似,使您可以轻松地在 JavaScript.[=20= 中使用您的 Laravel 命名路由]
要修改或向 URL 添加前缀,您必须使用中间件或 Route Groups 从后端 (Laravel) 执行此操作,因为 Ziggy 不会创建URL,它只是提供您在 Laravel 的 web.php 文件中定义的 URL 到 Javascript.
这就是为什么您的根 blade 文件中有 @routes
。如果删除它,this.routes
或 this.$routes
将不可用。
例如
Route::group(['prefix' => 'u'], function () {
Route::inertia('/dashboard', 'Dashboard')->name('dashboard');
});
这意味着此 URL 将在 /u/dashboard
可用,您可以使用 Javascript 作为 this.route('dashboard');
或阅读有关 ziggy 包的更多信息以获得您想要的结果