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
相关产品推荐
相关产品推荐

