经过发布周短暂的休息后,Astro 4.6 现已发布,我们回到了常规发布日程!此版本包含一个新的国际化手动路由策略、CSRF 保护的实验性支持、开发工具栏的新功能等等。
完整版本亮点包括
要升级现有项目,请使用自动化的 @astrojs/upgrade
CLI 工具。或者,通过运行包管理器的升级命令来手动升级
# Recommended:npx @astrojs/upgrade
# Manual:npm install astro@latestpnpm upgrade astro --latestyarn upgrade astro --latest
国际化手动路由策略
Astro 4.6 引入了国际化手动路由策略。对于默认路由策略无法完全满足需求的场景,这种新策略允许您完全控制国际化 Astro 网站的路由。
要启用手动路由,请在 astro.config.mjs
中将 i18n.routing
选项设置为 manual
import { defineConfig } from "astro/config";
export default defineConfig({ i18n: { locales: ["en", "fr"], defaultLocale: "fr", routing: "manual", },});
然后向您的项目添加一个中间件来处理路由
import { defineMiddleware } from "astro:middleware";import { redirectToDefaultLocale } from "astro:i18n";
// Example middleware that redirects all requests to the default locale apart for the /about pageexport const onRequest = defineMiddleware(async (context, next) => { if (context.url.startsWith("/about")) { return next(); } else { return redirectToDefaultLocale(context, 302); }});
另外,您可以使用 astro:i18n
中的新 middleware
函数导入 Astro 自己的中间件逻辑,以在默认路由策略的基础上进行构建。
import { defineMiddleware, sequence } from "astro:middleware";import { middleware } from "astro:i18n"; // Astro's own i18n routing middleware
export const userMiddleware = defineMiddleware(() => { // Your custom middleware logic here});
export const onRequest = sequence( userMiddleware, middleware({ redirectToDefaultLocale: false, prefixDefaultLocale: true }))
请查阅国际化文档,了解有关如何使用手动路由进行国际化的更多信息。
开发工具栏可移动
Astro 4.6 引入了将开发工具栏移动到屏幕底部不同位置的功能。如果您的粘性页眉覆盖了屏幕底部,或者您只是喜欢将工具栏放在其他位置,这会非常有用。开发工具栏旨在帮助您,而不是阻碍您!感谢 Ming-jun Lu 贡献了此项功能!
实验性:支持 CSRF 保护
Astro 4.6 增加了对 CSRF 保护的实验性部分支持。此功能目前处于实验性阶段,未来版本可能会有变动。
要启用它,请在 astro.config.mjs
中设置 experimental.security.csrfProtection
选项。
import { defineConfig } from "astro/config";
export default defineConfig({ experimental: { security: { csrfProtection: { origin: true, }, }, },});
启用此设置后,Astro 会检查所有现代浏览器自动传递的“origin”头是否与每个 Request
发送的 URL 匹配。如果不匹配,Astro 将响应 403 Forbidden
状态码。
请注意,此功能仅适用于按需渲染(也称为服务器端渲染)的页面。
Cookie 改进
感谢 Farzard,Astro 用于删除 cookie 的辅助函数(Astro.cookies.delete
)现在允许设置更多 cookie 属性,而不仅仅是 path
和 domain
属性。这也许是一个“小”改变,但绝对值得深入了解!
弃用对旧版本 Node.js 的支持
根据我们的 Node.js 支持和升级策略,此版本的 Astro 弃用了对以下版本的支持:
- 低于 18.17.1 版本的 Node.js 18
- Node.js 19(奇数版本)
- 低于 20.3.0 版本的 Node.js 20。
正如我们的支持策略所述,此决定是经过仔细考量多种因素后做出的。我们相信这一改变将为所有用户带来更稳定、更安全的 Astro 体验。
您可以继续使用已弃用的 Node.js 版本,直到 Astro 的下一个主要版本 (v5) 发布。但是,在安装 Astro 时您可能会看到警告,并且某些功能可能无法正常工作。
错误修复
您懂的,Astro 4.6 包含了更多未在此发布帖子中提及的错误修复和小型改进!查阅完整的发布说明了解更多信息。