
本文详解如何在 Laravel 中为多个独立 Blade 组件(如 div1.blade.php、div2.blade.php)分别定义并自动聚合其专属 JavaScript,确保主布局(main.blade.php)能正确渲染各组件 HTML 并合并所有 @section('script') 内容,避免脚本丢失或执行顺序错误。
本文详解如何在 laravel 中为多个独立 blade 组件(如 div1.blade.php、div2.blade.php)分别定义并自动聚合其专属 javascript,确保主布局(main.blade.php)能正确渲染各组件 html 并合并所有 `@section('script')` 内容,避免脚本丢失或执行顺序错误。
在 Laravel 的 Blade 模板系统中,@include 是静态引入子视图的便捷方式,但它不会自动继承或合并子视图中定义的 @section(如 @section('script'))。因此,当你在 div1.blade.php、div2.blade.php 等文件中各自声明 @section('script'),再通过 @include 引入到 main.blade.php 时,这些子节内容会被忽略——这是初学者常遇的核心陷阱。
✅ 正确解法是:改用 @extends + @yield 的继承机制,让所有组件(包括子组件)统一扩展同一个主布局,并由主布局集中 @yield('script')。这样,每个子视图通过 @section('script') 声明的脚本将被 Laravel 自动收集、追加并最终一次性输出。
✅ 推荐结构与代码实现
1. 定义主布局 resources/views/layouts/app.blade.php
<meta charset="utf-8"><meta name="viewport" content="width=device-width, initial-scale=1"><title>@yield('title', 'My App')</title>
@yield('style')
<main>
@yield('content')
</main><!-- 所有组件的 script 将在此处按声明顺序合并输出 -->
@yield('script')
⚠️ 注意:@yield('script') 必须放在










