代码之家  ›  专栏  ›  技术社区  ›  ahmad kharabsheh

InertiaJS-Vue-Laravel:利用CSS文件

  •  1
  • ahmad kharabsheh  · 技术社区  · 2 年前

    我需要使用一些全局css来通过我所有的vue组件删除焦点上的引导按钮边框

    resources/css/app.css

    .btn:focus {
        box-shadow: none;
    }
    

    resources/views/app.blade.php

    <!DOCTYPE html>
    <html>
      <head>
        <meta charset="utf-8" />
        <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0" />
        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet" integrity="sha384-EVSTQN3/azprG1Anm3QDgpJLIm9Nao0Yz1ztcQTwFspd3yD65VohhpuuCOmLASjC" crossorigin="anonymous">
        <script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js" integrity="sha384-MrcW6ZMFYlzcLA8Nl+NtUVF0sA7MsXsP1UyJoMp4YLEuNSfAP+JcXn/tWtIaxVXM" crossorigin="anonymous"></script>
        <link rel="stylesheet" href="../css/app.css"> // 404 Not Found
        @vite('resources/js/app.js')
        @inertiaHead
      </head>
      <body>
        @inertia
      </body>
    </html>
    

    然而 app.blade.php 似乎没有意识到 app.css 文件位于 resources/css ,因为它在控制台中给了我错误: Failed to load resource: the server responded with a status of 404 (Not Found)

    如何解决这个问题?谢谢

    1 回复  |  直到 2 年前
        1
  •  1
  •   rozsazoltan    2 年前

    反思你的问题

    <link rel="stylesheet" href="../css/app.css">
    

    这里的问题是你写的链接 href 开始在中查找CSS文件 public 文件夹而不是 resources 文件夹如果你不想用Vite编译CSS,只想写一个普通的CSS文件,只需将其放在 public/css/app.css 。然而,这是一个相当基本的方法。 您可以通过编译生成更好的代码,所以我建议使用以下解决方案之一。

    解决方案#1

    我想您还想编译 app.css 产品版本的文件。在这种情况下,您可以使用 @vite 加载的刀片指令 app.css 也

    @vite(['resources/css/app.css', 'resources/js/app.js'])
    

    此外,在 vite.config.js 文件,则需要添加app.css进行编译。

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

    解决方案#2(更适合Inertia和其他SPA解决方案)

    在Inertia的Laravel文档中,另一种建议的方法是简单地导入 app.css 进入 app.js 文件。

    @vite('resources/js/app.js')
    

    让我们导入 app.css 进入 app.js 文件

    import '../css/app.css';