You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Pug插值已废弃,gulp-pug不支持ES6模板字符串,求JSON-LD替代方案

解决Pug中JSON-LD渲染的替代方案

我来给你几个实用的方案,帮你绕开废弃的插值语法和gulp-pug对ES6模板字符串的支持问题,顺利实现JSON-LD的输出:

方案1:使用Pug变量 + JSON.stringify(推荐)

这个方法最可靠,能自动处理JSON的语法规范(比如引号转义),完全避开手动拼接的坑:

- // 先在Pug里定义你的Schema对象,直接引用现有变量
- const orgSchema = {
    "@context": "http://schema.org",
    "@id": site.home + "/#organization", // 用字符串拼接替代ES6模板字符串
    "@type": "Organization",
    "name": company.name,
    "description": company.businessDescription
  }

// 用=直接输出JSON.stringify后的结果
script(type="application/ld+json")= JSON.stringify(orgSchema)

为什么推荐这个方案?

  • 自动处理所有JSON语法细节,比如变量里包含双引号时会自动转义,不会导致JSON格式错误
  • 代码结构更清晰,Schema对象和输出逻辑分离,便于维护
  • 完全符合Pug的现代语法规范,没有废弃语法的风险

方案2:保留Pug原生文本插值

如果你的gulp-pug版本还支持Pug的#{}插值(目前大多数版本都支持,所谓的“废弃”可能指的是极旧版本的特定语法),也可以直接在脚本块里使用原生插值:

script(type="application/ld+json").
  {
    "@context": "http://schema.org",
    "@id": "#{site.home}/#organization",
    "@type": "Organization",
    "name": "#{company.name}",
    "description": "#{company.businessDescription}"
  }

注意事项:

  • 如果company.name或company.businessDescription这类变量包含双引号、换行符等特殊字符,手动拼接会导致JSON格式错误,这时候还是方案1更稳妥
  • 确认你的gulp-pug版本没有完全移除#{}插值支持(最新版的pug和gulp-pug都还保留这个语法)

额外提示

如果确实遇到gulp-pug对ES6语法支持不足的问题,可以尝试升级gulp-pug到最新版本,不过对于JSON-LD场景来说,前面的两个方案已经足够解决问题了。

内容的提问来源于stack exchange,提问作者Vladimir

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.28 07:09:57