在幕后,为了 Nuxt v4 的发布(尤其是在 unjs
方面,为 Nitro v3 做准备!),已经进行了很多工作。
⚡️ 由 jiti
驱动的更快启动速度
加载 nuxt 配置文件、模块和其他构建时代码现在由 jiti
v2 驱动。您可以在 jiti v2 发布说明 中查看更多关于此版本的信息,但其中最重要的一点是原生 node esm 导入(如果可能),这意味着更快的启动速度。✨
📂 与客户端/服务器共享代码和类型的共享文件夹
您永远不应该在 nitro 代码中导入 Vue 应用程序代码(反之亦然)。但这在共享不依赖于 nitro/vue 上下文的类型或实用程序时,意味着一个摩擦点。
为此,我们有一个新的 shared/
文件夹 (#28682)。您不能将 Vue 或 nitro 代码导入到此文件夹中的文件,但它会生成自动导入(如果您使用 compatibilityVersion: 4
),您可以在应用程序的其余部分中使用它们。
如果需要,您可以使用新的 #shared
别名,它指向此文件夹。
共享文件夹与您的 server/
文件夹位于同一级别。(如果您使用 compatibilityVersion: 4
,这意味着它不在您的 app/
文件夹内。)
🦀 rspack
构建器
我们很高兴地宣布一个新的 Nuxt 一流构建器 rspack
。它仍然是实验性的,但我们已经重构了内部 Nuxt 虚拟文件系统,以使用 unplugin
使其成为可能。
如果您喜欢它,请告诉我们 - 并随时提出您在使用过程中遇到的任何问题。
👉 要尝试它,您可以使用 这个启动器 - 或者只需安装 @nuxt/rspack-builder
并在您的 nuxt 配置文件中设置 builder: 'rspack'
。
✨ 新的组合式函数
我们有了新的 useResponseHeader
和 useRuntimeHook
组合式函数 (#27131 和 #29741)。
🔧 新的模块实用程序
我们现在有了一个新的 addServerTemplate
实用程序 (#29320),用于添加虚拟文件以便在 nitro 运行时路由中访问。
🚧 v4 变更
我们合并了一些仅在 compatibilityVersion: 4
时生效的更改,但是您可以提前选择启用。
- 以前,如果您有一个像
~/components/App/Header.vue
这样的组件,这会在您的 devtools 中显示为<Header>
。从 v4 开始,我们确保它显示为<AppHeader>
,但这需要选择启用,以避免破坏您可能已实现的任何手动<KeepAlive>
。(#28745)。 - Nuxt 在调用
pages:extend
之前扫描您文件中的页面元数据。但这导致了一些令人困惑的行为,因为此时添加的页面最终不会尊重其页面元数据。因此,我们现在在调用pages:extend
之前不扫描元数据。相反,我们有一个新的pages:resolved
钩子,它在pages:extend
之后调用,在所有页面都使用其元数据增强之后。我建议通过将experimental.scanPageMeta
设置为after-resolve
来选择启用此功能,因为它解决了许多错误。
🗺️ v3.15 路线图
它们没有及时赶上 v3.14,但在下一个小版本中,您可以期待(除其他外):
✅ 升级
通常,我们升级的建议是运行
npx nuxi@latest upgrade --force
这也将刷新您的 lockfile,并确保您从 Nuxt 依赖的其他依赖项(尤其是在 unjs 生态系统中)中拉取更新。
完整发布说明
非常感谢参与此版本的所有人。我们的下一个版本中将会有令人兴奋的内容!❤️
如果您有任何反馈或问题,请随时告诉我们!🙏