查看原文
其他

Nuxt 3.6 正式发布!

CUGGZ 前端充电宝 2023-10-06

6 月 23 日,Nuxt 3.6 正式发布,该版本带来了性能优化、完全静态的服务端组件、更好的样式内联、静态预设、增强的类型安全等许多功能改进。

SPA 加载指示器

如果网站使用ssr: false提供服务,或者在某些页面上禁用了服务端渲染,那么可能会用到新的内置 SPA 加载指示器。

现在可以在 ~/app/spa-loading-template.html 中放一个 HTML 文件,其中包含用于渲染加载屏幕的 HTML 内容,在这些页面上,加载屏幕将一直显示,直到应用完成渲染。

默认会渲染一个 Nuxt 图标动画。可以通过在 nuxt 配置文件中设置spaLoadingTemplate: false来禁用这个指示器。

性能优化

当应用渲染时,首先会运行插件,该版本对插件进行了构建时优化,这意味着它们在运行时不需要进行规范化或重新排序。

除此之外,还将错误组件的 JavaScript 包含在主入口文件中,这意味着如果用户在没有连接的情况下发生错误,仍然可以通过 ~/error.vue 处理它(这也会减少整体包大小)。

与 Nuxt 3.5.3 相比,最小的客户端包减少了约 0.7 KB。

完全静态的服务器组件

在静态页面上使用服务端组件是可行的,但是会增加应用的载荷大小。新版本将渲染的服务端组件存储为单独的文件,在导航之前进行预加载。

这依赖于新的、更丰富的 JSON 载荷格式,所以请确保没有将 experimental.renderJsonPayloads 设置为 false 来禁用它。

更好的样式内联

如果密切监控指标,并且没有关闭 experimental.inlineSSRStyles,应该能看到更多的 CSS 内联到页面中,并且外部 CSS 文件显著减少。新版本更擅长去重全局 CSS,特别是由类似 tailwind 或 unocss 等库添加的 CSS。

动画控制

为了可以对页面/布局组件有更精细的控制,例如使用GSAP 或其他库创建自定义过渡效果,现在允许在<NuxtPage>上设置pageRef,在<NuxtLayout>上设置layoutRef。这些将被传递到底层的 DOM 元素中。

自动检测“static”预设

到目前为止,运行 nuxt generate 在每个部署提供者上产生相同的输出结果,但是在 Nuxt 3.6 中,自动启用了静态提供者预设。这意味着如果将静态构建(通过 nuxt generate 生成)部署到受支持的提供者(目前是 Vercel 和 Netlify,很快还将支持 Cloudflare 和 GitHub Pages),将使用该提供者的特殊支持对页面进行预渲染。

这意味着可以配置任何不需要服务端函数的路由规则。因此,在部署不需要运行时 SSR 的站点时,可以获得最佳效果。它还解锁了在 Vercel 上使用 Nuxt Image 的功能。

增强的类型安全性

如果在 Nuxt 3.5 中使用新的 ~/server/tsconfig.json,现在对服务端特定的 #imports 和扩展提供更好的支持。因此,当从服务端目录中的 #imports 导入时,在 Nitro 中将获得正确的导入位置的 IDE 自动完成,并且不会看到诸如 useFetch 等不可用于服务端路由的 Vue 自动导入。

现在,还可以为运行时 Nitro 钩子提供类型支持。

最后,该版本还删除了更多对象具有默认 any 类型的位置。这应该可以提高 Nuxt 中许多位置的类型安全性,其中未指定的类型会回退到 any

  • RuntimeConfig
  • PageMeta
  • NuxtApp['payload']
  • ModuleMeta

Nitro 2.5

这个版本配备了全新的 Nitro 2.5,该版本提供了流式传输的实验性支持,这也由 Nuxt 本身的一些变化启用。

模块作者的新工具

这个版本为模块作者提供了一些实用工具,以便轻松地添加类型模板并断言与另一个模块的特定版本的兼容性。此外,这个版本将最终解锁一个新的 nuxt/module-builder模式,可以提高模块作者的类型支持。

升级

建议运行以下命令进行升级:

nuxi upgrade --force

这将刷新 lock 文件,并确保从 Nuxt 依赖的其他依赖项中获取更新,特别是在 unjs 生态系统中。

Release Note:https://nuxt.com/blog/v3-6

往期推荐

React Native 0.72 正式发布!

如此多的 JavaScript 框架,哪个最快?

高中生打破React性能极限,将React性能提升70%!

前端框架Svelte放弃TS,如何使用纯JS实现类型检查?

面试率超高的JS错误处理,看这篇就够了!

您可能也对以下帖子感兴趣

文章有问题?点此查看未经处理的缓存