可以用jade/pug 编写PHP 吗?

2024-01-14

是否可以?如果是这样,怎么办? 如果不是,如果我需要在文档中编写 PHP,我是否必须放弃 pug? 环顾四周后,我没有找到任何人解决了这个问题。


您可以将 PHP 嵌入到 Pug 模板中,就像您希望通过相对不受干扰的任何文字纯文本一样[*]。有文档中涵盖的许多选项 https://pugjs.org/language/plain-text.html,但我认为这些很可能是嵌入 PHP 的最佳选择:

  1. 在一个元素之后,它就会起作用。例如,p Good morning, <?php echo $user->name ?>.
  2. 单独在一行上。由于任何以“<?php echo $foo; ?>)就会起作用。
  3. 多行 PHP 是一种有点复杂的情况。如果您同意将其包装在 HTML 元素中,则可以使用 Pug 的块文本语法:在元素后面放置一个点,然后在下面包含缩进的纯文本。

    p.
        <?php
        if ($multiline) {
            echo 'Foo!';
        }
        ?>
    

    如果您需要在元素之外使用它,另一个选项是在每行前面加上管道:

    |<?php
    |if ($multiline) {
    |   echo 'Foo!';
    |}
    |?>
    

    (从技术上讲,由于上面的第 2 点,第一行不需要添加前缀,但如果使用此方法,我无论如何都会添加前缀以保持一致性。)

  4. 要在属性中使用 PHP,您只需在等号前面加上感叹号来防止转义:p(class!="<?php echo $foo ?>")。 (有趣的是,对未转义属性值的支持是专门为此用例添加 https://github.com/pugjs/pug/issues/198#issuecomment-2960113.)

当然,默认情况下 .pug 文件会编译为 .html 文件,因此如果您使用它们来生成 PHP,您将需要更改扩展名。一种简单的方法是使用gulp http://gulpjs.com/gulp-pug https://github.com/pugjs/gulp-pug and gulp重命名 https://github.com/hparra/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 标准语法中的任何内容冲突。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

可以用jade/pug 编写PHP 吗? 的相关文章

随机推荐

  • 对于这个 I/O 密集型操作,为什么 asyncio 库比线程慢?

    我正在编写一个 python 程序 用于枚举网站的域名 例如 a google com 首先 我使用了threading模块来执行此操作 import string import time import socket import thre
  • height/minHeight 和 display:flex 的行为

    我正在观察以下行为 这段代码 div div div div div div div div 结果是这样的 See 红色边框 看起来带有 id 地图的 d
  • 如何使用 VueJS 防止数字输入

    我需要创建一个验证来防止用户在文本框中输入数字 我找到了一些使用本机 JavaScript 的解决方案 但它在我这边不起作用 在我的文本框中我有这个触发器 v on keyup preventNumericInput event gt 在我
  • Node.js:EBADF,错误文件描述符

    如果我多次重新加载我的应用程序 从浏览器中使用重新加载按钮 例如50 reload 10 seconds它给了我这个错误 events js 45 throw arguments 1 Unhandled error event Error
  • 迁移工作项数据时出错[重复]

    这个问题在这里已经有答案了 迁移工作项数据时出现以下错误 由于以下原因 配置失败 com opshub exceptions DataVaIidationException OpsHub 012017 字段 映射名称 10 1 I 31XD
  • HTML 重复 ID

    我的控件是根据用户输入动态构建的 有nID 也是动态的文本框 然而 我没有预见到这个 HTML 会在同一 html 页面的其他地方重用 我现在面临的问题是重复的 ID 这导致我的 jQuery 函数无法正常工作 我确实明白 ID 应该是唯一
  • Math.Net 解值为 0 的线性方程组

    我试图在 Math Net 中求解矩阵 当矩阵的实际解之一为 0 时 但我得到 NaN 作为结果 这是一个示例矩阵 为简单起见已对其进行了简化 1 0 1 10000 0 1 1 1000 0 0 0 0 代码示例 public void
  • 重构 Form_for 创建多态关联中注释的方法

    我正在研究我的第一个多态关联关系 但在重构我的 form for 创建评论时遇到了麻烦 我尝试浏览多态协会 RailsCastshttp railscasts com episodes 154 polymorphic association
  • .htaccess,将404错误重写到其他域

    如何将所有 404 错误重定向到另一个域 我找到了 Error 404 http example com error html 但是我需要 if Error 404 http example com 1 我试过了 RewriteEngine
  • python 中的随机()

    在Python中的函数random 均匀地生成半开范围 0 0 1 0 内的随机浮点数 原则上它能生成 0 0 即零 和 1 0 即统一 吗 实际应用中是什么样的场景呢 0 0可以生成 1 0不能 因为它不在范围内 因此 相对于 生成概率0
  • 在 Swift 中将图像(或视频)发布到服务器

    您好 我正在使用 NSURLSession 快速将 json 数据发布到服务器 如下所示 var request NSMutableURLRequest URL NSURL string http mypath com var sessio
  • 2016 年最佳密码存储算法

    实际上我读了很多与算法相关的帖子 比如md5 sha1等等 但我仍然不确定哪一种是当今最安全且最好使用的 我是网络开发的初学者 我要求世界上所有最好的程序员来教我并向我展示 我希望你们能给我选择和使用它的例子 谢谢 顺便 2016 年如何安
  • Django、apache、mod_wsgi - 错误:脚本标头过早结束

    Apache 以调试模式登录 Tue Dec 21 11 36 33 2010 info client 1 53 149 114 mod wsgi pid 24831 process mysite application mysite co
  • 按键对 React Native 部分列表进行排序和分组

    我有一个部分列表 其中填充了来自 firebase 的数据 该列表显示按日期划分的事件信息 当前月份显示为THIS MONTH和其他日期使用其速记值JAN FEB etc 我得到的数据很好并且可以很好地显示它 但我不知道如何按日期对数据数组
  • 使用具有多个条件的 If 语句

    我编写了以下代码 基本上应该相应地为一些框着色 每当我运行此代码时 它都会运行第一种情况 即即使需要选择其他情况也是如此 这是代码 Sub Macro quaterly If Sheet2 Range B6 Value 1 Or 2 Or
  • 如何选择每组的前N行

    我的三重存储中有一些数据 例如 Subject Predicate Object
  • ASP.NET HttpContext 缓存在插入后立即删除

    我有一个 ASP NET 4 Web 服务 它有一个ImportModule行动在一个ModuleController控制器 这就是它的工作原理 用户将模块上传为 CSV 文件 正在使用该文件读取HttpPostedFileBase Inp
  • PHP 致命错误:在非对象上调用成员函数bind_param() [重复]

    这个问题在这里已经有答案了 我有以下代码 statement mysqli gt prepare INSERT INTO paypal transactions txn id payer email mc gross mc currency
  • Go的interface{}和C中的void*一样吗?

    由于类型变量interface 可以有任何值 这是否意味着它本质上是一个像 C 中的 void 一样的通用指针 而C的void 指针和 Go 的interface 变量共享可以存储任意类型的属性 但有一个很大的区别 Go 接口变量还存储它们
  • 可以用jade/pug 编写PHP 吗?

    是否可以 如果是这样 怎么办 如果不是 如果我需要在文档中编写 PHP 我是否必须放弃 pug 环顾四周后 我没有找到任何人解决了这个问题 您可以将 PHP 嵌入到 Pug 模板中 就像您希望通过相对不受干扰的任何文字纯文本一样 有文档中涵