🏘️ 路由组
我们现在支持使用括号/方括号命名目录,以便组织您的路由而不影响路径。
例如
-| pages/
---| index.vue
---| (marketing)/
-----| about.vue
-----| contact.vue
这将在您的应用程序中生成 /
、/about
和 /contact
页面。 marketing
组在您的 URL 结构中被忽略。
在 原始 PR 中了解更多信息。
🏝️ 岛屿和头部元数据
服务器组件岛屿现在可以操纵头部,例如在渲染时添加 SEO 元数据。
在 #27987 中了解更多信息。
🪝 自定义预取触发器
我们现在支持 NuxtLink
的自定义预取触发器 (#27846)。
例如
<template>
<div>
<NuxtLink prefetch-on="interaction">
This will prefetch when hovered or when it gains focus
</NuxtLink>
<!-- note that you probably don't want both enabled! -->
<NuxtLink :prefetch-on="{ visibility: true, interaction: true }">
This will prefetch when hovered/focus - or when it becomes visible
</NuxtLink>
</div>
</template>
还可以为您的应用程序全局启用/禁用这些功能,并为每个链接覆盖它们。
例如
export default defineNuxtConfig({
experimental: {
defaults: {
nuxtLink: {
prefetch: true,
prefetchOn: { visibility: false, interaction: true }
}
}
}
})
🗺️ 更好的服务器源映射
使用 node --enable-source-maps
运行时,您可能已经注意到服务器构建中 Vue 文件的源映射指向 Vite 构建输出(类似于 .nuxt/dist/server/_nuxt/index-O15BBwZ3.js
)。
现在,即使在 Nitro 构建之后,您的服务器源映射也将引用您的原始源文件 (#28521)。
请注意,提高构建性能最简单的方法之一是在不使用源映射时将其关闭,您可以在 nuxt.config
中轻松完成此操作。
export default defineNuxtConfig({
sourcemap: {
server: false,
client: true,
},
})
🎁 模块作者的新功能
在 Nuxt v4 发布之前,我们正在努力为模块作者添加一些关键功能,包括一个新的 isNuxtMajorVersion
实用程序(在需要时使用)(#27579),以及使用新的 defineNuxtModule().with()
方法为合并的模块选项提供更好的推断类型 (#27520)。
✨ 改进的开发警告
在中间件中使用数据获取组合式时,我们不再发出警告 (#28604),并且在用户组件的名称以 Lazy 开头时发出警告 (#27838)。
🚨 Vue TypeScript 更改
在一段时间内,在 Vue 生态系统中,我们一直在扩展 @vue/runtime-core
以向 vue
添加自定义属性等。但是,这无意中破坏了扩展 vue
的项目的类型 - 这现在是扩展这些接口的官方推荐和记录方式(例如, ComponentCustomProperties、 GlobalComponents 和 等等)。
这意味着 *所有* 库都必须更新其代码(否则它将破坏扩展 vue
的库的类型)。
我们已沿此路线更新了 Nuxt 中的类型,但当与尚未执行此操作的库一起使用最新的 vue-router
时,您可能会遇到问题。
请创建一个带有重现步骤的问题 - 我很乐意帮助在相关的上游库中创建一个 PR 来解决问题。或者,您可以通过在项目的根目录中创建一个 declarations.d.ts
并包含以下代码来解决此问题 (鸣谢 @BobbieGoede)
import type {
ComponentCustomOptions as _ComponentCustomOptions,
ComponentCustomProperties as _ComponentCustomProperties,
} from 'vue';
declare module '@vue/runtime-core' {
interface ComponentCustomProperties extends _ComponentCustomProperties {}
interface ComponentCustomOptions extends _ComponentCustomOptions {}
}
✅ 升级
像往常一样,我们建议您运行以下命令进行升级
npx nuxi@latest upgrade --force
这也会刷新您的锁定文件,并确保您从 Nuxt 依赖的其他依赖项(尤其是在 unjs 生态系统中)中获取更新。
完整的发行说明
非常感谢参与本次发布的每一个人 - 是你们让 Nuxt 成为可能。❤️
如果您有任何反馈或问题,请随时告知我们!🙏