Nuxt 3.9
来自参与此次发布的所有 Nuxt 贡献者,祝您和您的家人圣诞快乐!🎁🎄
v3.9 版本中我们 packed 了许多功能,迫不及待想让您试用。
⚡️ Vite 5
此版本支持 Vite 5 和 Rollup 4。模块作者可能需要检查以确保您创建的任何 vite 插件与这些最新版本兼容。
这带来了一系列出色的改进和错误修复 - 查看 Vite 更新日志 以获取更多信息。
✨ Vue 3.4 就绪
此版本已使用最新的 Vue 3.4 候选版本进行测试,并具有必要的配置来利用 Vue 3.4 中的新功能,包括在生产环境中调试 hydration 错误(只需在您的 Nuxt 配置中设置 debug: true
)。
👉 要利用这些优势,只需在 v3.4 发布后更新您的 vue
版本,或者立即试用候选版本
{
"dependencies": {
"nuxt": "3.9.0",
"vue": "3.4.0-rc.1",
"vue-router": "latest"
}
}
🏝️ 交互式服务器组件
这是一个高度实验性的更新,但现在可以在 Nuxt 服务器组件中体验交互式组件。您需要额外启用此新功能以及组件岛屿。
export default defineNuxtConfig({
experimental: {
componentIslands: {
selectiveClient: true
}
}
})
现在,在服务器组件中,您可以使用 nuxt-client
指令指定要 hydration 的组件。
<NuxtLink :to="/" nuxt-client />
我们对此感到非常兴奋 - 请务必告诉我们您是如何使用它的!🙏
🔥 自动服务器优化
我们现在使用 Vite 新的 AST 感知 'define' 对服务器端代码执行更精确的替换,这意味着像这样的代码将不再抛出错误。
<script setup lang="ts">
if (document) {
console.log(document.querySelector('div'))
}
</script>
在此之前,这是不可能的,因为我们不想冒着意外替换应用程序非 JS 部分中像 document
这样的普通单词的风险。但是 Vite 新的 define
功能由 esbuild
提供支持并且是语法感知的,因此我们有信心启用此功能。不过,如果需要,您可以选择退出。
export default defineNuxtConfig({
hooks: {
'vite:extendConfig' (config) {
delete config.define!.document
}
}
})
🚦 细粒度加载 API
我们现在有一个新的基于 hook 的系统用于 <NuxtLoadingIndicator>
,包括一个 useLoadingIndicator
composable,让您可以控制/停止/启动加载状态。如果您愿意,也可以 hook 到 page:loading:start
和 page:loading:end
。
🏁 在 callOnce
中运行单个事件
有时您只想运行一次代码,无论您加载页面多少次 - 并且您不希望它在服务器上运行时在客户端再次运行。
为此,我们有一个新的实用程序:callOnce
(#24787)。
<script setup>
const websiteConfig = useState('config')
await callOnce(async () => {
console.log('This will only be logged once')
websiteConfig.value = await $fetch('https://my-cms.com/api/website-config')
})
</script>
请注意,此实用程序是上下文感知的,因此它<强调>必须强调>在组件 setup 函数或 Nuxt 插件中调用,与其他 Nuxt composables 一样。
🚨 错误类型
一段时间以来,useAsyncData
和 useFetch
返回的错误都被非常通用地类型化为 Error
。我们大大改进了它们的类型可能性,使其在您实际收到的内容方面更加准确。(我们在底层使用 h3
createError
实用程序来规范化错误,因此例如,它们可以从服务器序列化到客户端。)
我们已尝试以向后兼容的方式实现类型更改,但您可能会注意到,如果您手动配置这些 composables 的泛型,则需要更新泛型。有关更多信息,请参阅 (#24396),如果您遇到任何问题,请告诉我们。
🔥 Schema 性能
在此版本中,我们花了一些时间进行一些小的性能改进,因此您应该注意到某些方面会更快一些。这是一个正在进行的项目,我们对提高 Nuxt 开发服务器的初始加载时间有一些想法。
✅ 升级
与往常一样,我们建议的升级方法是运行
npx nuxi upgrade
完整发布说明
感谢您阅读至此!我们希望您喜欢新版本。如果您有任何反馈或问题,请告诉我们。
Nuxting 快乐 ✨