Laravel 中的 Blade 模板与普通 php

Posted

技术标签:

【中文标题】Laravel 中的 Blade 模板与普通 php【英文标题】:Blade template vs plain php in Laravel 【发布时间】:2014-04-20 10:22:03 【问题描述】:

据我了解,Blade 只是regex 解析器,它将任何Blade 构造转换为php 代码,然后从PHP 生成普通的html。似乎这个过程使得使用Blade 模板加载文件更慢(因为额外的步骤Blade -> PHP)。如果是这样,我为什么要使用Blade?仅仅是因为优雅的语法还是因为Blade文件存储在cache中?

【问题讨论】:

【参考方案1】:

您会使用 Blade,因为您想使用 Blade。就像你说的那样,它的语法要好得多,一旦你知道它的简单语法,它就会很快上手。

普通 PHP:

<?php if ($user->isLogged()): ?>
    Welcome back, <strong><?= $user->name; ?></strong>
<?php endif; ?>

刀片:

@if ($user->isLogged())
    Welcome back, <strong> $user->name </strong>
@endif

当然,这只是一个基本的控制结构。 Blade 也内置了模板支持。

速度

两者之间几乎没有速度差异,因为在第一次加载时,Laravel 将编译任何已更改为 PHP 等效视图的视图。后续页面加载将改用此编译文件(它们存储在 app/storage/views)。

我猜唯一的额外开销将是初始检查以查看视图是否已编译。不过还是算了。

【讨论】:

这也是有效的 PHP:isLogged()) ?> 欢迎回来,= $user->name ?> 您错过了当今在网络上使用一种诱人语言的最重要原因之一,即自动转义。在您的示例中,在 PHP 中回显用户名容易受到 XSS 的影响,而通过诱人的语言输出将自动转义字符串。这是使用任何诱人语言的一个很好的理由,包括 Blade,它不会转向争论个人品味。 @gpmcadam 我知道你的意思是模板,但在某种程度上,你打错了 3 次,这让我感到奇怪。

以上是关于Laravel 中的 Blade 模板与普通 php的主要内容,如果未能解决你的问题,请参考以下文章

Laravel/Blade,内容中的模板内容

将 Laravel 路由中的数组传递给 Blade 模板

将 Laravel 中的表单值传递给 Blade 模板

Laravel中的模板引擎Blade

laravel Blade 模板引擎

将 Laravel Blade 模板与 Vue JS 和事件监听器一起使用