刀片模板与Laravel中的普通php

cas*_*stt 17 php parsing blade laravel-4

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

Jas*_*wis 34

你使用Blade是因为你想使用Blade.就像你说它有一个更好的语法,一旦你知道它的简单语法,它就会很快使用.

常规PHP:

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

刀:

@if ($user->isLogged())
    Welcome back, <strong>{{ $user->name }}</strong>
@endif
Run Code Online (Sandbox Code Playgroud)

当然那只是一个基本的控制结构.Blade也提供了模板支持.

速度

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

我想唯一的额外开销是初始检查以查看视图是否已编译.尽管如此.

  • 您错过了今天在网络上使用诱人语言的最重要原因之一,即**自动转义**.在您的示例中,回显PHP中的用户名易受XSS影响,而通过诱人语言输出将自动转义字符串.这是一个很好的理由,可以使用任何诱人的语言,包括Blade,这不会转向争论个人品味. (10认同)