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的主要内容,如果未能解决你的问题,请参考以下文章