Skip to main content

Svelte 新功能:2022 年 12 月

迈向 SvelteKit 1.0 的角落

SvelteKit 1.0 就在眼前!随着 99% 的里程碑问题已完成,过去一个月推出了许多新变化,让我们一起来看看吧……

让我们开始吧!

SvelteKit 的新功能

  • 使用 willUnload 属性来判断导航是否会导致应用程序被卸载(整页刷新/关闭/跳转到其他页面)。(#6813)
  • __data.json 请求现在支持缓存,并确保在所有失效场景下缓存匹配的响应 (#7532)
  • 现在支持链接到 <a name="hash"> 标签 (#7596)
  • handle 钩子中抛出重定向现在已被支持 (#7612)
  • 没有提供布局的情况下会自动添加一个回退组件 (#7619)
  • resolve 钩子中的新 preload 函数,可以决定哪些文件应该添加到 标签中进行预加载 (文档, #4963, #7704)
  • 现在可以通过 $app/environment 获取 version (#7689, #7694)
  • handleError 现在可以返回一个 promise (#7780)

重大更新:

  • routeId 现在改为 route.id (#7450)
  • beforeNavigateafterNavigate 方法中,’load’ 重命名为 ‘enter’,'unload’ 更名为 ‘leave’。beforeNavigate 现在在外部导航时会调用一次类型为 ‘unload’ 的动作,并且在重定向期间不再运行 (#7502, #7529, #7588)
  • redirect 助手现在仅允许状态码在 300-308 范围内进行重定向,并且仅允许 error 状态码在 400-599 范围内 (#7767) (#7615, #7767)
  • 在路由目录名称中,特殊字符现在将被编码为十六进制/Unicode 转义序列 (#7644)
  • 现在使用 devalue 来 (de)serialize 动作数据 - 这只对直接获取动作数据而不通过 use:enhance 的用户构成重大更改 (#7494)
  • trailingSlash 现在是页面的一个选项,而不是配置项 (#7719)
  • 客户端路由器现在会忽略 %sveltekit.body% 外的链接 (#7766)
  • prerendering 现在更名为 building,并且 config.kit.prerender.enabled 已被移除 (#7762)
  • getStaticDirectory() 已从 builder API 中移除 (#7809)
  • generateManifest(...) 中的 format 选项已被移除 (#7820)
  • data-sveltekit-prefetch 已被替换为 -preload-code-preload-dataprefetch 现在更名为 preloadDataprefetchRoutes 现在更名为 preloadCode (#7776, #7776)
  • SubmitFunction 已从 $app/forms 移动到 @sveltejs/kit (#7003)

Svelte 的新功能

  • css 编译器选项 css: falsecss: true 现已被 'external' | 'injected' | 'none' 设置替代,以加速 ssr 构建的编译并提高清晰度 (3.53.0)

有关 Svelte 编译器的全部更改,包括未发布的更改,请查看 CHANGELOG


社区展示

使用 Svelte 构建的应用程序与网站

学习资源

阅读

库、工具和组件

本月内容到此结束!如果我们遗漏了什么,可以通过 RedditDiscord 和我们联系。

明年见 🎆