Blade是Laravel的模板引擎,使用@extends和@section实现模板继承,通过{{}}输出变量,支持@if、@foreach等指令,可高效构建清晰的视图结构。

Blade 是 Laravel 自带的轻量级模板引擎,它允许你使用简洁、优雅的语法编写视图,并支持模板继承、组件、条件语句和循环等特性。Blade 文件的扩展名为 .blade.php,会被 Laravel 编译成原生 PHP 代码并缓存,因此不会影响性能。
创建与渲染 Blade 视图
在 resources/views 目录下创建 Blade 文件,例如:home.blade.php。
内容示例:
首页
欢迎来到 {{ $name }} 的网站
在控制器中使用 view() 函数渲染该视图:
public function index()
{
return view('home', ['name' => 'Laravel']);
}
模板继承:使用 @extends 和 @section
Blade 的核心优势之一是模板继承,可以定义一个布局文件(layout),然后在其他页面中继承并填充特定区域。
步骤如下:
- 在 resources/views/layouts 下创建主布局文件,如 app.blade.php
- 使用 @section 定义可替换的内容区块
- 子页面使用 @extends 继承布局,并用 @section 填充内容
示例:主布局 app.blade.php
@yield('title', '默认标题')
我的网站
@yield('content')
子页面继承布局,如 home.blade.php:
@extends('layouts.app')
@section('title', '主页')
@section('content')
这是首页内容
欢迎访问!
@endsection
@section('footer')
@parent
本页由 Blade 驱动
@endsection
说明:
- @yield('title') 输出命名区块内容,可设置默认值
- @section('footer')...@endsection 定义可覆盖或追加的内容
- @parent 表示保留父模板中的内容并追加新内容
常用 Blade 指令
Blade 提供了许多便捷指令来简化视图逻辑:
- @if / @else / @endif:条件判断
- @foreach / @endforeach:循环输出数据
- {{ $variable }}:显示变量(自动转义)
- {!! $html !!}:输出原始 HTML(不转义,注意 XSS 风险)
- @include('view.name'):包含其他视图
- @auth / @guest:根据用户登录状态显示内容
示例:使用循环和条件
@if($posts)
- {{ $post->title }}
@foreach($posts as $post)
@endforeach
@else
暂无文章
@endif
基本上就这些。掌握 Blade 的模板继承和常用语法后,就能高效构建结构清晰、易于维护的前端页面。









