Blade 是 Laravel 模板的默认引擎
Laravel 模板体系围绕 Blade 构建。Blade 把 PHP 代码编译成原生 PHP 缓存文件,运行时几乎不产生额外开销。与直接在 HTML 中混写 PHP 相比,Blade 提供了更简洁的语法和更清晰的视图分层。
Blade 文件以 .blade.php 结尾,放在 resources/views 目录中。控制器通过 view() 函数返回模板,并传入数据:
return view(‘users.profile’, [‘user’ => $user]);
在模板中,{{ $user->name }} 会自动经过 htmlspecialchars 转义,避免 XSS 风险。这是 Blade 最重要的安全默认值之一。
模板继承与布局复用
Blade 用 @extends 和 @section 实现布局继承。先定义母版:
@yield(‘content’)
子视图填充区块:
@extends(‘layouts.app‘)
@section(‘title’, ‘用户列表’)
@section(‘content’)
用户列表
@endsection
这种方式避免了在每个页面重复编写头部和底部。对于局部复用,使用 @include 引入片段,或通过 @each 批量渲染。
组件与插槽
Laravel 7 之后,Blade 组件成为推荐的复用方式。用 php artisan make:component Alert 生成组件类和模板。组件模板中通过 {{ $slot }} 接收默认内容:
{{ $slot }}
调用时使用标签语法:
操作失败
组件支持属性、插槽和方法,比 @include 更适合封装带逻辑的 UI 单元。
性能优化与缓存
Blade 编译后的视图缓存在 storage/framework/views。生产环境应执行:
php artisan view:cache
这会预编译所有模板,减少首次请求的编译开销。部署时配合 php artisan config:cache 和 route:cache 一起使用。修改模板后需清除缓存:
php artisan view:clear
需要避免的常见问题包括:在模板中执行复杂查询、嵌套过深的组件、以及滥用 @php 块写业务逻辑。模板应只负责展示,数据准备交给控制器或视图模型。
安全与调试
Blade 默认转义输出,但使用 {!! $html !!} 会输出原始 HTML。仅在内容来源可信时使用,否则应先用 HTML 净化库处理。
调试时,@dump 和 @dd 可以在模板中快速查看变量。开发环境建议开启 Blade 的 @includeIf 和错误提示,便于定位缺失的视图文件。
Blade 的学习成本低,但与 Laravel 的组件、插槽、视图缓存结合后,能支撑中大型项目的视图层组织。掌握其编译机制与缓存策略,是写出可维护 Laravel 模板的关键。

