Laravel @stack在组件中

时间:2018-09-17 11:55:53

标签: laravel laravel-5 components laravel-5.6 laravel-blade

我在Laravel应用中创建了一个tile组件,该组件在多个页面上用于显示/链接到配方(注意:这不是角度,vue或react组件)。

在图块组件中,我将css文件“推送”到名为styles的堆栈中:

@push('styles')
  <link href="{{ mix('css/tile.css') }}" rel="stylesheet">
@endpush

在我的head.blade.php中,styles堆栈被输出:

@stack('styles')

每次调用/渲染组件时,都会将tile.css文件添加到我的style堆栈中。这就像一个咒语,我的图块是根据我的tile.css文件设置样式的。唯一的问题是tile.css文件多次添加到styles堆栈中。

是否有一种方法可以防止/检查styles堆栈中的两次插入,还是必须手动将tile.css文件添加到生成切片组件的每个页面/刀片文件中?

2 个答案:

答案 0 :(得分:2)

pushonce是在Laravel 7中引入的。

@pushonce('styles')
  <link href="{{ mix('css/tile.css') }}" rel="stylesheet">
@endpush

答案 1 :(得分:1)

我相信这是不可能的,但老实说,我认为没有任何用处。

实际上,您通常会创建多个SASS文件,并使用Laravel mix将它们连接成一个文件,因此您不必在意每个子页面上需要哪个CSS。您只需将所有CSS都编译成单个文件,因此浏览器仅加载一次CSS,然后使用缓存中的文件。