Laravel@组件中的堆栈

Laravel@组件中的堆栈,laravel,laravel-5,components,laravel-5.6,laravel-blade,Laravel,Laravel 5,Components,Laravel 5.6,Laravel Blade,我已经在我的Laravel应用程序中创建了一个tile组件,它在多个页面上用于显示/链接食谱(注意:这不是angular、vue或react组件) 在我的平铺组件中,我将css文件“推”到名为样式的堆栈中: @push('styles') <link href="{{ mix('css/tile.css') }}" rel="stylesheet"> @endpush 每次调用/呈现我的组件时,tile.css文件都会添加到我的style堆栈中。这就像一个符咒,我的瓷砖是根据我

我已经在我的Laravel应用程序中创建了一个tile组件,它在多个页面上用于显示/链接食谱(注意:这不是angular、vue或react组件)

在我的平铺组件中,我将css文件“推”到名为
样式的堆栈中:

@push('styles')
  <link href="{{ mix('css/tile.css') }}" rel="stylesheet">
@endpush
每次调用/呈现我的组件时,
tile.css
文件都会添加到我的
style
堆栈中。这就像一个符咒,我的瓷砖是根据我的
tile.css
文件设计的。唯一的问题是,
tile.css
文件多次添加到
style
堆栈中


有没有办法防止/检查
样式
堆栈中的双重插入,或者我必须手动将
tile.css
文件添加到生成tile组件的每个页面/刀片文件中?

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


事实上,您通常创建多个SASS文件,并使用laravelmix将其连接到单个文件中,因此您不必关心每个子页面上需要哪一块CSS。您只需将所有CSS编译成单个文件,所以浏览器只加载CSS一次,然后使用缓存中的文件。

pushonce
是在Laravel 7中引入的

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

是否存在调用此组件的父组件?你可以把样式放在那里是的,推/堆栈不是“智能的”,它只是一种将内容(推)附加到块并输出它(堆栈)的方法。如果你得到的是重复的内容,你可能想在你循环浏览你的磁贴刀片之前把它推到堆栈上一次。是的,这是我自己建议的答案。将CSS文件添加到父blade.php文件中,但是如果有更干净的方法来执行此操作。。。现在我必须检查每个文件,手动添加“推送”代码,而不是在组件中添加一次…@Tomjesch我有一个自定义仪表板的问题,该仪表板的组件由需要reallyLarge.js文件的用户动态选择。当使用
@stack
@push
时,同一个reallyllarge.js文件被多次添加,但网络检查表明浏览器只发出一个请求,因此当它将html输出增加另一行时,它被多次提供。@azame True,网络检查器显示浏览器仅对特定CSS文件发出一个请求。虽然这在我的头脑中是不必要的代码。谢谢你指出这是不可能的!我提出这个问题的原因是,我正在尝试仅在需要时加载文件(js/css)。我将研究连接(和缩小)我的代码或在特定页面上手动包含代码!例如,当您有一个图表库在每个图表容器上生成随机ID时,它会很有用。那么你就不能在主文件中包含你的JS了。太棒了,这正是我想要的!结合检查是否有任何食谱
pushonce
非常有效@Tomjesch几年后你不应该改变你的答案。在你的原稿中,你问的是拉维5而不是拉维7question@MarcinNabiałek这是一个已经有2年多历史的问题,拉雷维尔没有解决方案。在你的回答中,你直截了当地写道,“不可能”。在拉维7中,他们提供了一个解决方案。@ahinkle但这是为拉维5标记的。如果您或某人有Laravel 7的解决方案,请提问并回答一个问题,并在其上标记Laravel 7(或在标题中提供)。这样,也许在Laravel 30中,您的解决方案将不起作用,然后-有人将添加新答案,op将批准的答案更改为其他答案,尽管最初的问题是关于Laravel 5的?来吧
@pushonce('styles')
  <link href="{{ mix('css/tile.css') }}" rel="stylesheet">
@endpush