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

Astro JS中如何将Frontmatter变量传递至脚本?

在Astro JS中如何将Frontmatter变量传递至客户端脚本?

在Astro里,Frontmatter代码运行在服务器端,而普通<script>标签默认在客户端浏览器执行,两者分属不同运行上下文,直接像你示例里那样引用变量会触发未定义错误。下面是两种可靠的传递方式:

方法一:使用define:vars指令(官方推荐)

Astro提供的define:vars指令可安全地将服务器端Frontmatter变量序列化后传递到客户端脚本,支持字符串、数字、布尔值、对象、数组等可序列化类型。

示例代码:

---
const title = "this is title"
---

some content

<script define:vars={{ title }}>
  const metatitle = title;
  console.log(metatitle); // 控制台输出 "this is title"
</script>

方法二:通过DOM属性传递

如果需要将变量与DOM元素关联,可把变量值嵌入元素的data-*属性,再在客户端脚本中读取该属性。

示例代码:

---
const title = "this is title"
---

<div id="title-data" data-title={title}></div>

<script>
  const element = document.getElementById('title-data');
  const metatitle = element.dataset.title;
  console.log(metatitle); // 控制台输出 "this is title"
</script>

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.16 04:54:51