发布·  

Nuxt 3.15

Nuxt 3.15 发布 - 搭载 Vite 6,更佳的 HMR 和更快的性能
Daniel Roe

Daniel Roe

@danielroe.dev

我们正持续致力于发布 Nitro v3、Nuxt v4 等。但我们很高兴能(及时)在圣诞节前发布 Nuxt v3.15。

❄️ 下雪了!

节日快乐!启动 Nuxt 时您会注意到(如果您在北半球)加载屏幕上有些雪花(#29871).

⚡️ 包含 Vite 6

Nuxt v3.15 首次包含Vite 6。尽管这是一个主要版本,我们预计这不会对 Nuxt 用户造成破坏性更改(请参阅完整的迁移指南)。但是,如果您的依赖项依赖于特定的 Vite 版本,请务必小心。

Vite 6 最重要的变化之一是新的环境 API,我们希望将其与 Nitro 结合使用,以改善服务器开发环境。敬请关注!

您可以在Vite 6 更改日志.

中阅读完整的更改列表。

🪵 Chromium devtools 改进

我们经常谈论 Nuxt DevTools,但 v3.15 在开发模式下与基于 Chromium 的浏览器 devtools 进行了更好的集成。我们现在使用Chrome DevTools 扩展性 API

来增加在浏览器 devtools 性能面板中打印 nuxt 钩子时间的支持。

🗺️ callOnce 的导航模式#30260callOnce 是 Nuxt 内置的组合式函数,用于仅运行一次代码。例如,如果代码在服务器上运行,它就不会在客户端再次运行。但有时您确实希望代码在*每次导航*时都运行——只是避免初始的服务器/客户端双重加载。为此,新增了一个 mode: 'navigation' 选项,它将仅在*每次导航*时运行一次代码。(有关更多信息,请参阅

await callOnce(() => counter.value++, { mode: 'navigation' })

)。

🥵 模板、页面和页面元数据的 HMR#30113).

我们现在为 Nuxt 的虚拟文件(如路由、插件、生成的文件)以及页面元数据的内容(在 definePageMeta 宏中)实现了热模块重载(

这意味着您在开发中将获得更快的体验,并且在更改路由时无需重新加载页面。

📋 页面元数据增强#30015我们现在支持通过 experimental.extraPageMetaExtractionKeys 提取额外的页面元数据键(可能由模块作者使用)(

)。这使模块作者能够在构建时,在 pages:resolved 钩子中使用此信息。#30241我们现在还支持 definePageMeta 中的本地函数(

function validateIdParam(route) {
  return !!(route.params.id && !isNaN(Number(route.params.id)))
}

definePageMeta({
  validate: validateIdParam,
})

🔥 性能改进

)。这意味着您可以执行以下操作#30017).

如果应用程序清单将在水合应用程序时使用,我们现在会在浏览器中预加载它(#30297).

如果可能,我们还会将 vue-router 的哈希模式历史记录从您的 bundle 中进行 tree shake——特别是在您没有自定义 app/router.options.ts 的情况下(

🐣 v4 更新#30305).

✅ 升级

像往常一样,我们建议您运行以下命令进行升级

npx nuxi@latest upgrade --force

这也将刷新你的 lockfile,并确保你拉取 Nuxt 依赖的其他依赖项(尤其是在 unjs 生态系统中)的更新。

完整的发布说明

v4 的新默认设置又有一些更改,包括默认仅为 Vue 组件内联样式(

衷心感谢所有参与本次发布的人。❤️

如果你有任何反馈或问题,请随时告诉我们!🙏