在 pug 模板中使用 Object.assign() 或 spread ... 运算符

问题描述 投票:0回答:1

我有 2 个 Pug 文件。

第一个定义配置对象(base.pug)对象如下

const config = { name: 'abc', age: 25}

另一个 Pug 模板 (main.pug),其中包括

base.pug
并希望为对象添加附加属性。

script.
  const base = {tech: 'js'}
  const mergedObject = {config, base} // I supposed this should merge 2 object.
  const mergedObjectWithSpreadOp = {...config, tech: 'js'} // again I supposed this should merge 2 object.

注意:使用的 pug-runtime 是 2.0.1

我的方法都不起作用。我怎样才能实现这个目标?

我想将

base.pug
中的对象与
main.pug

合并
pug
1个回答
0
投票

正如你所发现的,用 Pug 写这样的东西——

script.
  const foo = {...config, tech: 'js'}

— 仅在脚本标记内按原样呈现该文本。这是您正在使用的标签插值语法的预期行为。

如果您想在 Pug 中合并两个对象,然后将合并的对象渲染为脚本标记中的字符串,则需要执行以下操作:

script.
  const foo = !{JSON.stringify({...config, tech: 'js'})}

地点:

  • {...config, tech: 'js'}
    使用 JS spread 语法创建单个新对象
  • JSON.stringify(...)
    将该对象转换为表示它的字符串
  • !{...}
    是用于非转义字符串插值的 Pug 语法

最后一部分告诉 Pug 评估该代码,而不是仅仅渲染为文本。

© www.soinside.com 2019 - 2024. All rights reserved.