是否可以?如果是这样,怎么办?
如果不是,如果我需要在文档中编写PHP,是否必须放弃哈巴狗?
在四处搜寻之后,我没有找到解决此问题的任何人。
最佳答案
您可以将PHP嵌入到Pug模板中,就像您要通过相对宽松的[*]传递任何文字纯文本一样。有a number of options covered in the docs,但我认为这些最有可能是嵌入PHP的最佳选择:
p Good morning, <?php echo $user->name ?>
。 p.
<?php
if ($multiline) {
echo 'Foo!';
}
?>
如果需要在元素外部使用它,则另一个选择是在每行前面加上管道作为前缀:
|<?php
|if ($multiline) {
| echo 'Foo!';
|}
|?>
(从技术上讲,由于上面的第2点,第一行不需要加前缀,但是如果使用此方法,我还是会为保持一致性而加前缀。)
p(class!="<?php echo $foo ?>")
。 (有趣的是,对未转义属性值的支持是added specifically for this use case。)当然,默认情况下,.pug文件会编译为.html文件,因此,如果使用它们生成PHP,则需要更改扩展名。一种简单的方法是使用gulp和gulp-pug和gulp-rename插件来处理它们,如下所示:
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('.'));
});
我没有与Pug进行广泛的合作,所以我不知道在现实的用例中是否存在任何潜在的难题,但是最简单的示例首先可以正常工作。
[*] Pug仍对纯文本执行变量插值,但是它使用
#{variable}
格式,该格式不应与PHP的标准语法中的任何内容冲突。关于php - 是否可以在jade/pug中编写PHP?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/42023440/