如何使用 jetstream-inertia 在 Laravel 8 中安装 Vuetify?
How to install Vuetify in Laravel 8 with jetstream-inertia?
我正在尝试在最新的 Laravel 版本 (8) 上安装 Vuetify,但我无法安装。即使控制台没有向我显示任何错误,它似乎也不起作用。
那是我的 resource/plugins/vuetify.js
import Vue from 'vue'
// import Vuetify from 'vuetify'
import Vuetify from 'vuetify/lib'
// import 'vuetify/dist/vuetify.min.css'
Vue.use(Vuetify)
const opts = {}
export default new Vuetify(opts)
我的webpack.mix.js:
const mix = require('laravel-mix')
const VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin')
mix
.js('resources/js/app.js', 'public/js')
.postCss('resources/css/app.css', 'public/css', [
require('postcss-import'),
require('tailwindcss'),
])
.webpackConfig({
plugins: [
new VuetifyLoaderPlugin()
],
})
.browserSync('tb8.test');
app.js
import PortalVue from 'portal-vue';
Vue.use(InertiaApp);
Vue.use(InertiaForm);
Vue.use(PortalVue);
Vue.use(vuetify);
const app = document.getElementById('app');
new Vue({
vuetify,
render: (h) =>
h(InertiaApp, {
props: {
initialPage: JSON.parse(app.dataset.page),
resolveComponent: (name) => require(`./Pages/${name}`).default,
},
}),
}).$mount(app);
和welcome.blade.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Nunito';
}
</style>
</head>
<body class="antialiased">
<div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0">
@if (Route::has('login'))
<div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
@auth
<a href="{{ url('/dashboard') }}" class="text-sm text-gray-700 underline">Dashboard</a>
@else
<a href="{{ route('login') }}" class="text-sm text-gray-700 underline">Login</a>
@if (Route::has('register'))
<a href="{{ route('register') }}" class="ml-4 text-sm text-gray-700 underline">Register</a>
@endif
@endif
</div>
@endif
<v-app>
<v-main>
Hello World
</v-main>
</v-app>
</div>
</body>
</html>
谁能帮我看看错在哪里?
提前谢谢你
瓦莱里奥
新鲜Laravel 8.12+Jetstream+惯性+VueJs+Vuetify
- 将header中的样式字符串添加到/resources/views/app.blade.php
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
- 添加到/resources/js/app.js
import Vuetify from 'vuetify';
import 'vuetify/dist/vuetify.min.css';
Vue.use(Vuetify)
和
vuetify: new Vuetify(),
在 'new Vue({' 之后像这样:
require('./bootstrap');
import Vue from 'vue';
import Vuetify from 'vuetify';
import { InertiaApp } from '@inertiajs/inertia-vue';
import { InertiaForm } from 'laravel-jetstream';
import PortalVue from 'portal-vue';
import 'vuetify/dist/vuetify.min.css';
Vue.mixin({ methods: { route } });
Vue.use(InertiaApp);
Vue.use(InertiaForm);
Vue.use(PortalVue);
Vue.use(Vuetify)
const app = document.getElementById('app');
new Vue({
vuetify: new Vuetify(),
render: (h) =>
h(InertiaApp, {
props: {
initialPage: JSON.parse(app.dataset.page),
resolveComponent: (name) => require(`./Pages/${name}`).default,
},
}),
}).$mount(app);
之后,例如,您可以像这样创建 vuetify 组件:
/resources/js/Components/NavigationDrawers.vue
使用来自 Vuetify 实验室的代码
在/resources/js/Pages/Dashboard.vue 中初始化这个vue-component
<navigation-drawers/>
随叫随到
import NavigationDrawers from '@/Components/NavigationDrawers'
和
NavigationDrawers
在 <script>
示例:
<template>
<app-layout>
<navigation-drawers/>
....
....
</app-layout>
</template>
<script>
import NavigationDrawers from '@/Components/NavigationDrawers'
import AppLayout from '@/Layouts/AppLayout'
import Welcome from '@/Jetstream/Welcome'
export default {
components: {
AppLayout,
Welcome,
NavigationDrawers,
},
}
</script>
它可以帮助你为你的项目设置 vuetify。
Sass 和其他配置您可以自行配置。
目前 Vuetify 不适用于 vue 3,因此要安装 vuetify,您必须使用 vue 2。这样做:
我们可以安装vue 2自带的jetstream 2.1,我在下面描述了安装过程:
YouTube 视频:https://youtu.be/V8_yLfNhg2I
安装laravel
composer create-project laravel/laravel project_name
现在转到 composer.json 文件并在 中要求:{} 仅添加一行,然后作曲家文件的其余部分应该相同。
"laravel/jetstream": "2.1",
添加 composer.json 的“require”部分后看起来像这样:
"require": {
"php": "^7.3|^8.0",
"fideloper/proxy": "^4.4",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^8.40",
"laravel/tinker": "^2.5",
"laravel/jetstream": "2.1",
},
现在运行作曲家更新
现在运行phpartisanjetstream:install惯性
现在运行npm install
现在运行npm install vuetify
转到resources/css/app.css并添加以下内容
@import url('https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900');
@import url('https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css');
@import "vuetify/dist/vuetify.min.css";
现在转到 resources/js/app.js 并添加以下代码:
require('./bootstrap');
// Import modules...
import Vue from 'vue';
import { App as InertiaApp, plugin as InertiaPlugin } from '@inertiajs/inertia-vue';
import PortalVue from 'portal-vue';
//add these two line
import Vuetify from 'vuetify'
import 'vuetify/dist/vuetify.min.css'
Vue.mixin({ methods: { route } });
Vue.use(InertiaPlugin);
Vue.use(PortalVue);
//also add this line
Vue.use(Vuetify);
const app = document.getElementById('app');
new Vue({
//finally add this line
vuetify: new Vuetify(),
render: (h) =>
h(InertiaApp, {
props: {
initialPage: JSON.parse(app.dataset.page),
resolveComponent: (name) => require(`./Pages/${name}`).default,
},
}),
}).$mount(app);
现在运行npm运行dev
这时候你的 vuetify 就可以工作了!
要检查 vuetify 与 inertia js 是否正常工作,请遵循:
转到resources/js/Pages并创建新文件名test.vue
将以下代码添加到test.vue
<template>
<v-app>
<v-container>
<v-btn>Click Me!</v-btn>
</v-container>
</v-app>
</template>
现在运行npm运行dev
现在转到route/web。php并添加
Route::get('/', function () {
return Inertia::render('test');
});
现在 php artisan 在浏览器中服务 到 运行。并且不要忘记将 migrate 和 add database 添加到 .env
我正在尝试在最新的 Laravel 版本 (8) 上安装 Vuetify,但我无法安装。即使控制台没有向我显示任何错误,它似乎也不起作用。
那是我的 resource/plugins/vuetify.js
import Vue from 'vue'
// import Vuetify from 'vuetify'
import Vuetify from 'vuetify/lib'
// import 'vuetify/dist/vuetify.min.css'
Vue.use(Vuetify)
const opts = {}
export default new Vuetify(opts)
我的webpack.mix.js:
const mix = require('laravel-mix')
const VuetifyLoaderPlugin = require('vuetify-loader/lib/plugin')
mix
.js('resources/js/app.js', 'public/js')
.postCss('resources/css/app.css', 'public/css', [
require('postcss-import'),
require('tailwindcss'),
])
.webpackConfig({
plugins: [
new VuetifyLoaderPlugin()
],
})
.browserSync('tb8.test');
app.js
import PortalVue from 'portal-vue';
Vue.use(InertiaApp);
Vue.use(InertiaForm);
Vue.use(PortalVue);
Vue.use(vuetify);
const app = document.getElementById('app');
new Vue({
vuetify,
render: (h) =>
h(InertiaApp, {
props: {
initialPage: JSON.parse(app.dataset.page),
resolveComponent: (name) => require(`./Pages/${name}`).default,
},
}),
}).$mount(app);
和welcome.blade.php
<!DOCTYPE html>
<html lang="{{ str_replace('_', '-', app()->getLocale()) }}">
<head>
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1">
<title>Laravel</title>
<!-- Fonts -->
<link href="https://fonts.googleapis.com/css2?family=Nunito:wght@400;600;700&display=swap" rel="stylesheet">
<style>
body {
font-family: 'Nunito';
}
</style>
</head>
<body class="antialiased">
<div class="relative flex items-top justify-center min-h-screen bg-gray-100 dark:bg-gray-900 sm:items-center sm:pt-0">
@if (Route::has('login'))
<div class="hidden fixed top-0 right-0 px-6 py-4 sm:block">
@auth
<a href="{{ url('/dashboard') }}" class="text-sm text-gray-700 underline">Dashboard</a>
@else
<a href="{{ route('login') }}" class="text-sm text-gray-700 underline">Login</a>
@if (Route::has('register'))
<a href="{{ route('register') }}" class="ml-4 text-sm text-gray-700 underline">Register</a>
@endif
@endif
</div>
@endif
<v-app>
<v-main>
Hello World
</v-main>
</v-app>
</div>
</body>
</html>
谁能帮我看看错在哪里? 提前谢谢你
瓦莱里奥
新鲜Laravel 8.12+Jetstream+惯性+VueJs+Vuetify
- 将header中的样式字符串添加到/resources/views/app.blade.php
<link href="https://cdn.jsdelivr.net/npm/@mdi/font@4.x/css/materialdesignicons.min.css" rel="stylesheet">
- 添加到/resources/js/app.js
import Vuetify from 'vuetify';
import 'vuetify/dist/vuetify.min.css';
Vue.use(Vuetify)
和
vuetify: new Vuetify(),
在 'new Vue({' 之后像这样:
require('./bootstrap');
import Vue from 'vue';
import Vuetify from 'vuetify';
import { InertiaApp } from '@inertiajs/inertia-vue';
import { InertiaForm } from 'laravel-jetstream';
import PortalVue from 'portal-vue';
import 'vuetify/dist/vuetify.min.css';
Vue.mixin({ methods: { route } });
Vue.use(InertiaApp);
Vue.use(InertiaForm);
Vue.use(PortalVue);
Vue.use(Vuetify)
const app = document.getElementById('app');
new Vue({
vuetify: new Vuetify(),
render: (h) =>
h(InertiaApp, {
props: {
initialPage: JSON.parse(app.dataset.page),
resolveComponent: (name) => require(`./Pages/${name}`).default,
},
}),
}).$mount(app);
之后,例如,您可以像这样创建 vuetify 组件:
/resources/js/Components/NavigationDrawers.vue
使用来自 Vuetify 实验室的代码在/resources/js/Pages/Dashboard.vue 中初始化这个vue-component
<navigation-drawers/>
随叫随到import NavigationDrawers from '@/Components/NavigationDrawers'
和NavigationDrawers
在<script>
示例:
<template>
<app-layout>
<navigation-drawers/>
....
....
</app-layout>
</template>
<script>
import NavigationDrawers from '@/Components/NavigationDrawers'
import AppLayout from '@/Layouts/AppLayout'
import Welcome from '@/Jetstream/Welcome'
export default {
components: {
AppLayout,
Welcome,
NavigationDrawers,
},
}
</script>
它可以帮助你为你的项目设置 vuetify。 Sass 和其他配置您可以自行配置。
目前 Vuetify 不适用于 vue 3,因此要安装 vuetify,您必须使用 vue 2。这样做: 我们可以安装vue 2自带的jetstream 2.1,我在下面描述了安装过程:
YouTube 视频:https://youtu.be/V8_yLfNhg2I
安装laravel
composer create-project laravel/laravel project_name
现在转到 composer.json 文件并在 中要求:{} 仅添加一行,然后作曲家文件的其余部分应该相同。
"laravel/jetstream": "2.1",
添加 composer.json 的“require”部分后看起来像这样:
"require": {
"php": "^7.3|^8.0",
"fideloper/proxy": "^4.4",
"fruitcake/laravel-cors": "^2.0",
"guzzlehttp/guzzle": "^7.0.1",
"laravel/framework": "^8.40",
"laravel/tinker": "^2.5",
"laravel/jetstream": "2.1",
},
现在运行作曲家更新
现在运行phpartisanjetstream:install惯性
现在运行npm install
现在运行npm install vuetify
转到resources/css/app.css并添加以下内容
@import url('https://fonts.googleapis.com/css?family=Roboto:100,300,400,500,700,900'); @import url('https://cdn.jsdelivr.net/npm/@mdi/font@5.x/css/materialdesignicons.min.css'); @import "vuetify/dist/vuetify.min.css";
现在转到 resources/js/app.js 并添加以下代码:
require('./bootstrap'); // Import modules... import Vue from 'vue'; import { App as InertiaApp, plugin as InertiaPlugin } from '@inertiajs/inertia-vue'; import PortalVue from 'portal-vue'; //add these two line import Vuetify from 'vuetify' import 'vuetify/dist/vuetify.min.css' Vue.mixin({ methods: { route } }); Vue.use(InertiaPlugin); Vue.use(PortalVue); //also add this line Vue.use(Vuetify); const app = document.getElementById('app'); new Vue({ //finally add this line vuetify: new Vuetify(), render: (h) => h(InertiaApp, { props: { initialPage: JSON.parse(app.dataset.page), resolveComponent: (name) => require(`./Pages/${name}`).default, }, }), }).$mount(app);
现在运行npm运行dev
这时候你的 vuetify 就可以工作了!
要检查 vuetify 与 inertia js 是否正常工作,请遵循:
转到resources/js/Pages并创建新文件名test.vue
将以下代码添加到test.vue
<template> <v-app> <v-container> <v-btn>Click Me!</v-btn> </v-container> </v-app> </template>
现在运行npm运行dev
现在转到route/web。php并添加
Route::get('/', function () { return Inertia::render('test'); });
现在 php artisan 在浏览器中服务 到 运行。并且不要忘记将 migrate 和 add database 添加到 .env