实验性功能:保留脚本顺序
类型: boolean
默认值: false
astro@5.5.0
以与源代码中声明相同的顺序渲染多个 <style>
和 <script>
标签。
要启用此行为,请将 experimental.preserveScriptOrder
功能标志添加到你的 Astro 配置中
import { defineConfig } from "astro/config"
export default defineConfig({ experimental: { preserveScriptOrder: true }})
此实验性标志不需要特定用法,仅影响 Astro 渲染样式和脚本的顺序。
在同一页面上渲染多个 <style>
和 <script>
标签时,Astro 当前会在你生成的 HTML 输出中反转它们的顺序。这可能会导致意外结果,例如,当你的网站构建时,CSS 样式被先前定义的样式标签覆盖。而此实验性标志会按照 <script>
和 <style>
标签的定义顺序来渲染它们。
例如,以下组件有两个 <style>
标签和两个 <script>
标签
<p>I am a component</p><style> body { background: red; }</style><style> body { background: yellow; }</style><script> console.log("hello")</script><script> console.log("world!")</script>
编译后,Astro 的默认行为将创建一个内联样式,其中 yellow
出现在前,red
在后。这意味着将应用 red
背景。对于两个脚本也是如此,单词 world!
会先被打印,然后才是 hello
。
body {background:#ff0} body {background:red}
console.log("world!")console.log("hello")
当 experimental.preserveScriptOrder
设置为 true
时,<style>
和 <script>
标签的渲染顺序将与它们的书写顺序相匹配。对于相同的示例组件,生成的样式中 red
在前,yellow
在后;至于脚本,hello
会先被打印,然后才是 world!
。
body {background:red} body {background:#ff0}
console.log("hello")console.log("world!")
在未来的主版本中,Astro 将默认保留样式和脚本的顺序,但你可以使用 experimental.preserveScriptOrder
标志提前选择加入此未来行为。