我们正在继续努力发布 Nitro v3、Nuxt v4 等。但我们很高兴及时在圣诞节前发布 Nuxt v3.15。
❄️ 降雪!
节日快乐!您会注意到,当您启动 Nuxt 时(如果您在北半球),加载屏幕上会有些雪花 (#29871)。
⚡️ 包含 Vite 6
Nuxt v3.15 首次包含 Vite 6。虽然这是一个主要版本,但我们预计这不会对 Nuxt 用户造成重大更改(请参阅完整的迁移指南)。但是,如果您有依赖于特定 Vite 版本的依赖项,请注意。
Vite 6 最重要的更改之一是新的 Environment API,我们希望将其与 Nitro 结合使用,以改善服务器开发环境。敬请期待!
您可以在 Vite 6 更新日志 中阅读完整的更改列表。
🪵 Chromium 开发者工具改进
我们经常谈论 Nuxt DevTools,但 v3.15 在开发模式下为基于 Chromium 的浏览器开发者工具提供了更好的集成。
我们现在使用 Chrome DevTools 可扩展性 API,以在浏览器开发者工具性能面板中添加对打印 nuxt hook 时序的支持。
🗺️ callOnce
的导航模式
callOnce
是一个内置的 Nuxt composable 函数,用于仅运行一次代码。例如,如果代码在服务器上运行,则不会在客户端再次运行。但有时您确实希望代码在每次导航时都运行 - 只是为了避免最初的服务器/客户端双重加载。为此,有一个新的 mode: 'navigation'
选项,它将使代码仅每次导航运行一次。(有关更多信息,请参见 #30260。)
await callOnce(() => counter.value++, { mode: 'navigation' })
🥵 模板、页面 + 页面元数据的 HMR
我们现在为 Nuxt 的虚拟文件(如路由、插件、生成的文件)以及页面元数据的内容(在 definePageMeta
宏中)(#30113)实现了热模块重载。
这应该意味着您在开发中拥有更快的体验,并且在更改路由时无需重新加载页面。
📋 页面元数据增强
我们现在支持通过 experimental.extraPageMetaExtractionKeys
(#30015) 提取额外的页面元数据键(可能由模块作者使用)。这使模块作者能够在构建时在 pages:resolved
hook 中使用此信息。
我们现在还支持 definePageMeta
中的本地函数 (#30241)。这意味着您可以执行类似这样的操作
function validateIdParam(route) {
return !!(route.params.id && !isNaN(Number(route.params.id)))
}
definePageMeta({
validate: validateIdParam,
})
🔥 性能改进
如果应用清单将在水合应用时使用,我们现在会在浏览器中预加载它 (#30017)。
如果可以,我们还会从您的 bundle 中 tree shake vue-router 的 hash mode history - 特别是如果您没有自定义您的 app/router.options.ts
(#30297)。
🐣 v4 更新
If v4 的一些更多更改已发布了新的默认值,包括默认情况下仅内联 Vue 组件的样式 (#30305)。
✅ 升级
与往常一样,我们升级的建议是运行
npx nuxi@latest upgrade --force
这也将刷新您的 lockfile,并确保您从 Nuxt 依赖的其他依赖项(尤其是在 unjs 生态系统中)中拉取更新。
完整发布说明
非常感谢参与此版本的所有人。 ❤️
如果您有任何反馈或问题,请随时告诉我们! 🙏