Laravel + Vue + app.scss:样式似乎未使用?

时间:2020-07-20 02:39:52

标签: laravel vue.js sass

我正在尝试与Laravel和Vue建立一个项目。我使用的是此处所述的前端脚手架:https://laravel.com/docs/7.x/frontend

$ composer require laravel/ui
$ php artisan ui vue

这将加载Bootstrap并创建一些javascript文件和SCSS文件:

-->resources
  |-->js
     |-->app.js
     |-->bootstrap.js
  |-->sass
     |-->_variables.scss
     |-->app.scss

这也对resources/views/welcome.blade.php

进行了一些更改

我不了解Vue在哪里/如何使用resources/sass/app.scss。我曾尝试更改_variables.scss中的某些内容,例如基本字体大小和字体系列,但是我看不到结果反映在任何地方。同时,显然npm run dev正在处理该文件,因为例如,如果我引入语法错误,npm run dev命令将报告该文件。

很抱歉,如果没有足够的详细信息来回答我的问题,我正在尽力而为。我对Vue不太了解。如果您还需要了解其他信息,请在评论中提问。

1 个答案:

答案 0 :(得分:1)

Writing CSS

npm run dev命令将处理您的webpack.mix.js文件中的指令。通常,已编译的CSS将放置在public / css目录中:

npm run dev

Laravel的前端支架中包含的webpack.mix.js文件将编译resources/sass/app.scss SASS文件。这个app.scss文件导入了SASS变量文件并加载了Bootstrap,这为大多数应用程序提供了一个很好的起点。通过配置Laravel Mix,可以随意自定义app.scss文件,甚至可以使用完全不同的预处理器。

简而言之,您将在resources/sass/app.scss文件中工作,然后使用npm run ...进行编译,您将在/public/css/app.css文件中得到结果CSS。您可以在webpack.mix.js文件上change/configure

然后,您将在某些视图中加载已编译的文件,就像使用html和通用CSS一样:

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

但是,如果您想利用其他laravel混合功能,则可以使用mix()方法:

<link href="{{ mix('css/app.css') }}" rel="stylesheet" type="text/css" />

通常,css被加载到刀片模板中,该模板具有<html><head><body>标签,您可以将其用作扩展其他视图的布局。
即:

/resources/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 -->
    <script src="{{ mix('js/app.js') }}" defer></script>

    <!-- Styles -->
    <link href="{{ mix('css/app.css') }}" rel="stylesheet">
</head>
<body>
    <div id="app">
        @yield('content')
    </div>
</body>
</html>

/resources/views/home.blade.php

@extends('layouts.app')

@section('content')
<div class="container">
    <div class="row justify-content-center">
        <div class="col-md-8">
            <div class="card">
                <div class="card-header">Home</div>

                <div class="card-body">
                    @if (session('status'))
                        <div class="alert alert-success" role="alert">
                            {{ session('status') }}
                        </div>
                    @endif

                    You are in Home view!
                </div>
            </div>
        </div>
    </div>
</div>
@endsection