指南
全局脚本
加载全局第三方脚本,并为您的 Nuxt 应用优化它们。
背景
虽然 Nuxt 配置中的 app.head
方法允许加载全局脚本,但它可能很繁琐,并且需要手动优化。
export default defineNuxtConfig({
head: {
script: [ { src: 'https://analytics.com/tracker.js', async: true } ]
}
})
现在提供了一种更简单的方法: 直接将脚本 URL 输入到 scripts.globals
中。您还可以包含可选设置以使用特定优化来定制脚本加载过程。
您可能会考虑在以下情况下使用全局脚本
- 该脚本不是支持的 注册表脚本。
- 您不关心与第三方脚本提供的 API 交互(例如,您不需要使用来自 Google Analytics 的
gtag
)。 - 您正在与第三方脚本提供的 API 交互,但您不关心类型安全。
否则,建议使用 useScript 以更安全的方式加载脚本。
用法
globals
键支持字符串、对象和数组。
示例: 只使用 src 加载脚本
export default defineNuxtConfig({
scripts: {
globals: {
myScript: 'https://analytics.com/tracker.js',
}
}
})
示例: 加载脚本时提供额外的脚本属性
export default defineNuxtConfig({
scripts: {
globals: {
myScript: {
src: 'https://example.com/script.js',
integrity: 'sha256-abc123',
}
}
}
})
您可以选择将脚本提供为数组,这使您可以提供 脚本选项。
export default defineNuxtConfig({
scripts: {
globals: {
myScript: [
{ src: 'https://example.com/script.js' },
// load the script as part of the hydration process instead of on idle
{ trigger: 'client' }
]
}
}
})
访问全局脚本
所有 Nuxt 脚本都在 $scripts
Nuxt 应用属性上注册。
对于通过 nuxt.config 注册的脚本,类型自动完成可用。
<script setup lang="ts">
const { $scripts } = useNuxtApp()
$scripts.myScript // { $script, instance }
</script>
工作原理
globals
配置将用于创建一个虚拟 Nuxt 插件,该插件使用 useScript
可组合项加载脚本。
由于 useScript
正在幕后使用,因此了解 useScript 可组合项的默认值和行为很重要。
export default defineNuxtConfig({
scripts: {
globals: {
tracker: 'https://analytics.com/tracker.js',
}
}
})