Laravel Blade引入公共页面片段主要有@include、@extends、@fragment三种方式:@include用于静态局部HTML复用;@extends用于整页布局继承;@fragment适用于带参数的轻量UI小模块。

Laravel Blade 引入公共页面片段主要有三种实用方式:@include 包含、@extends 继承、以及 @fragment 定义复用片段。核心区别在于用途——@include 适合复用静态或局部 HTML(如导航栏、按钮、表单字段);@extends 用于整页结构复用(如统一的 HTML 框架 + 头尾 + 内容区);@fragment 更轻量灵活,适合带参数、可多次调用的 UI 小模块(如提示框、卡片组件)。
@include 引入静态公共片段
这是最直接的方式,适用于无需逻辑判断、只需原样插入的 HTML 片段。
- 把公共内容(如 header、menu、alert)单独存为
resources/views/common/header.blade.php - 在任意视图中用
@include('common.header')插入 - 支持传参:
@include('common.alert', ['type' => 'success', 'message' => '操作成功']),在 alert.blade.php 中直接使用{{ $type }}和{{ $message }} - 被包含的片段能访问父视图所有变量,无需额外声明
@extends 实现模板继承
适合构建统一布局(如后台管理页),让子页面专注“内容区”逻辑。
- 创建主模板,例如
resources/views/layouts/app.blade.php,内含@yield('title')、@yield('content')等占位符 - 子页面(如
resources/views/dashboard/index.blade.php)开头写@extends('layouts.app') - 用
@section('content')...@endsection填充对应区域;可用@parent在原有内容后追加(如扩展侧边栏) - 主模板中也可用
@include嵌套引入 header/footer 等片段,实现多层复用
@fragment 定义可复用函数式片段
从 Laravel 10+ 开始原生支持,比组件更轻,适合简单但需参数化渲染的小结构。
- 在任意 blade 文件中定义:
@fragment('card', ['title', 'body'])<div class="card"><h3>{{ $title }}</h3><p>{{ $body }}</p></div>@endfragment - 在其他视图中调用:
@use('card', ['title' => '用户信息', 'body' => '张三,28岁']) - 支持默认值:
@fragment('alert', ['type' => 'info', 'message']),调用时可只传message - 不依赖组件注册,定义即用,适合快速封装重复 UI 结构
不复杂但容易忽略:优先按场景选方式——局部复用选 @include,整体结构统一选 @extends,带逻辑/参数的小模块可考虑 @fragment。


















