可能吗?如果是这样,怎么样?如果不是,如果我需要在我的文档中编写PHP,我是否必须放弃哈巴狗?在四处寻找之后,我找不到任何对此有所了解的人.
你可以在Pug模板中嵌入PHP,就像你希望通过相对不受干扰的[*]传递的任何文字纯文本一样.有许多涉及在文档的选项,但我认为这是最有可能嵌入PHP的最佳选择:
p Good morning, <?php echo $user->name ?>.<?php echo $foo; ?>)都可以正常工作.多行PHP是一个有点复杂的案例.如果您可以将其包装在HTML元素中,则可以使用Pug的块文本语法:在元素后面加一个点,然后在下面包含缩进的纯文本.
p.
<?php
if ($multiline) {
echo 'Foo!';
}
?>
Run Code Online (Sandbox Code Playgroud)
如果您在元素外部需要它,另一个选项是为每行添加一个管道:
|<?php
|if ($multiline) {
| echo 'Foo!';
|}
|?>
Run Code Online (Sandbox Code Playgroud)
(从技术上讲,由于上面的第2点,第一行不需要加上前缀,但是如果使用这种方法,我只会为了一致性而将它作为前缀.)
p(class!="<?php echo $foo ?>").(有趣的是,为此用例专门添加了对未转义属性值的支持.)当然默认情况下.pug文件被编译为.html文件,因此如果您使用它们来生成PHP,您将需要更改扩展名.一个简单的方法做,这是用来处理它们吞掉与一饮而尽,哈巴狗和一饮而尽,重命名的插件,这将是这个样子:
var gulp = require('gulp'),
pug = require('gulp-pug'),
rename = require('gulp-rename');
gulp.task('default', function () {
return gulp.src('./*.pug')
.pipe(pug())
.pipe(rename({
extname: '.php'
}))
.pipe(gulp.dest('.'));
});
Run Code Online (Sandbox Code Playgroud)
我没有与Pug广泛合作,所以我不知道在现实世界的用例中是否会出现任何潜在的问题,但上面的简单示例都按预期工作.
[*] Pug仍然对纯文本执行变量插值,但它使用的#{variable}格式不应与PHP的标准语法中的任何内容冲突.
| 归档时间: |
|
| 查看次数: |
8645 次 |
| 最近记录: |