您现在的位置是:自如初>LaravelLaravel

Laravel9.2.x 使用 Vite 安装 bootstrap5

温新 2022-07-08 22:50:35 Laravel 1056人已围观

简介Laravel9.2.x 使用 Vite 安装 bootstrap5。作为一个先进的框架,Laravel与时俱进,使用vite管理

hi,我是温馨,一名PHPer


与时俱进

Laravel 环境说明:Laravel9.2


Laravel9.2 开始已经使用 Vite 作为前端资源打包。按照以往的方式使用 bootstrap 时,会发现 bootstrap 样式并没有生效,而是默认使用了 Tailwind CSS样式。

本篇文章就记录,使用Vite 在 Laravel9.2x 中安装使用 bootstrap5 样式。


第一步:创建项目

composer create-project  laravel/laravel la9_bootstrap

第二步:安装 Laravel UI

composer require laravel/ui

第三步:使用 bootstrap5

php artisan ui bootstrap --auth

若不需要使用 auth 系统,可以直接安装 php artisan ui bootstrap

第四步:vite.config.js 中导入 bootstrap5

这一步骤中,需要修改 vite.coffig.js 配置文件并删除 resources/css/app.css


修改前: vite.config.js

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';

export default defineConfig({
   plugins: [
       laravel([
           'resources/css/app.css',
           'resources/js/app.js',
       ]),
   ],
});

【使用此处配置】修改后:vite.config.js

import { defineConfig } from 'vite';
import laravel from 'laravel-vite-plugin';
import path from 'path'

export default defineConfig({
   plugins: [
       laravel([
           'resources/js/app.js',
       ]),
   ],
   resolve: {
       alias: {
           '~bootstrap': path.resolve(__dirname, 'node_modules/bootstrap'),
       }
   },
});

第五步:在 js 中导入 bootstrap5 SCSS

这一步中,需要在 resources/js/app.jsresources/js/bootstrap.js 中导入 bootstrap

// resources/js/app.js

import './bootstrap';

import '../sass/app.scss'

import * as bootstrap from 'bootstrap'

第六步:使用 @vite 替换 mix()

使用 Vite 进行管理时,需要使用 @vite 模板指令替换 mix()助手函数。

# 将下面 2行替换成
<link rel="stylesheet" href="{{ mix('css/app.css') }}">
<script src="{{ mix('js/app.js') }}" defer></script>
   
# 替换为
@vite(['resources/js/app.js'])

下面就在 app.blade.php 模板文件中进行替换:

views/layouts/app.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">

   <!-- CSRF Token -->
   <meta name="csrf-token" content="{{ csrf_token() }}">

   <title>{{ config('app.name', 'Laravel') }}</title>

   <!-- Scripts -->
   @vite(['resources/js/app.js'])
{{-- <script src="{{ asset('js/app.js') }}" defer></script> --}}

<!-- Fonts -->
   <link rel="dns-prefetch" href="//fonts.gstatic.com">
   <link href="https://fonts.googleapis.com/css?family=Nunito" rel="stylesheet">

   <!-- Styles -->
   {{-- <link href="{{ asset('css/app.css') }}" rel="stylesheet"> --}}
</head>
<body>
<div id="app">
   <nav class="navbar navbar-expand-md navbar-light bg-white shadow-sm">
       <div class="container">
           <a class="navbar-brand" href="{{ url('/') }}">
               {{ config('app.name', 'Laravel') }}
           </a>
           <button class="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarSupportedContent" aria-controls="navbarSupportedContent" aria-expanded="false" aria-label="{{ __('Toggle navigation') }}">
               <span class="navbar-toggler-icon"></span>
           </button>

           <div class="collapse navbar-collapse" id="navbarSupportedContent">
               <!-- Left Side Of Navbar -->
               <ul class="navbar-nav me-auto">

               </ul>

               <!-- Right Side Of Navbar -->
               <ul class="navbar-nav ms-auto">
                   <!-- Authentication Links -->
                   @guest
                       @if (Route::has('login'))
                           <li class="nav-item">
                               <a class="nav-link" href="{{ route('login') }}">{{ __('Login') }}</a>
                           </li>
                       @endif

                       @if (Route::has('register'))
                           <li class="nav-item">
                               <a class="nav-link" href="{{ route('register') }}">{{ __('Register') }}</a>
                           </li>
                       @endif
                   @else
                       <li class="nav-item dropdown">
                           <a id="navbarDropdown" class="nav-link dropdown-toggle" href="#" role="button" data-bs-toggle="dropdown" aria-haspopup="true" aria-expanded="false" v-pre>
                               {{ Auth::user()->name }}
                           </a>

                           <div class="dropdown-menu dropdown-menu-end" aria-labelledby="navbarDropdown">
                               <a class="dropdown-item" href="{{ route('logout') }}"
                                  onclick="event.preventDefault();
                                                    document.getElementById('logout-form').submit();">
                                   {{ __('Logout') }}
                               </a>

                               <form id="logout-form" action="{{ route('logout') }}" method="POST" class="d-none">
                                   @csrf
                               </form>
                           </div>
                       </li>
                   @endguest
               </ul>
           </div>
       </div>
   </nav>

   <main class="py-4">
       @yield('content')
   </main>
</div>
</body>
</html>

第七步:编译运行

npm install
npm run build

这样就可以咯,开始使用 bootstrap 样式吧。


很赞哦!(2)

文章评论

登录 注册

自如初--时间轴

QQ登录

站名:自如初

独白:向前走!向前走!

邮箱:xyhcx@foxmail.com

站点信息