---
title: "Nuxt 3.15"
description: "Nuxt 3.15 已发布 - 带来 Vite 6、更好的 HMR 和更快的性能"
canonical_url: "https://nuxt.zhcndoc.com/blog/v3-15"
---
# Nuxt 3.15

> Nuxt 3.15 已发布 - 带来 Vite 6、更好的 HMR 和更快的性能

我们继续致力于 Nitro v3 和 Nuxt v4 的发布。但我们很高兴在圣诞节前（刚好）发布 Nuxt v3.15。

## ❄️ 雪花飘飘！

节日快乐！当你启动 Nuxt 时 (如果你在北半球) 你会发现加载屏幕上有些雪花 ([#29871](https://github.com/nuxt/nuxt/pull/29871))。

## ⚡️ 集成 Vite 6

Nuxt v3.15 首次包含了 [Vite 6](https://vite.dev/blog/announcing-vite6)。虽然这是一个主要版本，但我们预计这对 Nuxt 用户不会造成破坏性更改（请参阅完整的 [迁移指南](https://vite.dev/guide/migration.html)）。但是，如果你有依赖于特定 Vite 版本的包，请小心。

Vite 6 最显著的变化之一是新的环境 API，我们希望与 Nitro 一起使用，以改善服务器开发环境。敬请关注这一动态！

你可以在 [Vite 6 更新日志](https://github.com/vitejs/vite/blob/main/packages/vite/CHANGELOG.md#600-2024-11-26) 中查看完整的变更列表。

## 🪵 Chromium 开发工具的改进

我们谈到了很多关于 Nuxt DevTools 的内容，但 v3.15 版本在 Chromium 浏览器的开发工具中提供了更好的开发模式集成。

我们现在使用 [Chrome 开发工具扩展 API](https://developer.chrome.com/docs/devtools/performance/extension) 来支持在浏览器开发工具性能面板中打印 nuxt hook 的时间。

![CleanShot 2024-11-14 at 15 05 22@2x](https://github.com/user-attachments/assets/57525027-750a-462f-b713-398302aec0cd)

## 🗺️ `callOnce` 的导航模式

`callOnce` 是一个内置的 Nuxt 可组合函数，只在运行一次的情况下执行代码。例如，如果代码在服务器上运行，那么在客户端不会再次运行。但有时你确实希望代码在每次导航时都运行 - 只需避免最初的服务器/客户端双重加载。为此，新增了 `mode: 'navigation'` 选项，代码只会在每次导航时运行一次。（有关更多信息，请参阅 [#30260](https://github.com/nuxt/nuxt/pull/30260)）。

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

## 🥵 模板、页面 + 页面元数据的热更新

我们现在对 Nuxt 的虚拟文件（如路由、插件、生成文件）以及页面元数据（在 `definePageMeta` 宏中）实现了热模块替换 ([#30113](https://github.com/nuxt/nuxt/pull/30113))。

这意味着在开发时你会有更快的体验，并且在更改路由时不需要重新加载页面。

## 📋 页面元数据增强

我们现在支持通过 `experimental.extraPageMetaExtractionKeys` 提取额外的页面元数据键（可能被模块作者使用） ([#30015](https://github.com/nuxt/nuxt/pull/30015))。这使得模块作者能够在构建时在 `pages:resolved` 钩子中使用这些信息。

我们还支持在 `definePageMeta` 中使用局部函数 ([#30241](https://github.com/nuxt/nuxt/pull/30241))。这意味着你可以这样做：

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

definePageMeta({
  validate: validateIdParam,
})
```

## 🔥 性能改进

如果在水合应用时将使用浏览器中的应用清单，我们现在将其预加载 ([#30017](https://github.com/nuxt/nuxt/pull/30017))。

如果可能，我们还将从你的捆绑包中剔除 vue-router 的哈希模式历史 - 具体来说，如果你没有自定义你的 `app/router.options.ts` ([#30297](https://github.com/nuxt/nuxt/pull/30297))。

## 🐣 v4 更新

为 v4 的新默认设置推出了一些其他更改，包括只默认内联 Vue 组件的样式 ([#30305](https://github.com/nuxt/nuxt/pull/30305))。

## ✅ 升级

和往常一样，我们建议的升级方式是运行：

```sh
npx nuxi@latest upgrade --force
```

这将刷新你的锁定文件，并确保你从 Nuxt 依赖的其他依赖项中拉取更新，特别是在 unjs 生态系统中。

## 完整的发布说明

::read-more
```yaml [props]
color: neutral
icon: i-simple-icons-github
target: _blank
to: https://github.com/nuxt/nuxt/releases/tag/v3.15.0
```
阅读 Nuxt `v3.15.0` 的完整发布说明。
::

非常感谢所有参与本次发布的朋友。❤️

如果你有任何反馈或问题，请毫不犹豫地告诉我们！🙏


## Sitemap

See the full [sitemap](https://nuxt.zhcndoc.com/sitemap.md) for all pages.
