Laravel @stack 在组件中

Laravel @stack in component

我在我的 Laravel 应用程序中创建了一个 tile 组件,它在几个页面上用于 display/link 食谱(注意:这不是 angular、vue 或反应成分)。

在我的 tile 组件中,我 "push" 一个 css 文件到一个名为 styles:

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

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

@stack('styles')

每当我的组件是 called/rendered 时,tile.css 文件就会添加到我的 style 堆栈中。这就像一个魅力,我的瓷砖是根据我的 tile.css 文件设计的。唯一的问题是 tile.css 文件被多次添加到 styles 堆栈。

有没有办法 prevent/check 在 styles 堆栈中进行双重插入,或者我是否必须手动将 tile.css 文件添加到每个 page/blade 文件哪个tile组件是生成的?

我认为这是不可能的,但老实说,我看不出有任何使用它的意义。

事实上,您通常会创建多个 SASS 文件,然后使用 Laravel 混合将这些文件连接成单个文件,因此您不关心每个子页面需要 CSS 的哪一部分。您只是将所有 CSS 编译成单个文件,因此浏览器仅加载 CSS 一次,然后使用缓存中的文件。

pushonce 是在 Laravel 7 中引入的。

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