现代化静态站点生成器 Astro 发布 2.6,引入中间件 (Middleware)
Astro 2.6 已正式发布。在该版本中,多项实验性功能进入稳定状态,包括:Middleware(中间件)、Hybrid SSR output mode(混合 SSR 输出模式)、Custom client directives(自定义客户端指令)和 CSS inlining(CSS 内联)。
此外还引入了许多新功能和改进,包括用于管理重定向的实验性新功能:
- 重定向(实验性):支持在 Astro 配置中对单个页面设置重定向
- 改进 Markdoc:Markdoc 现在与 Astro 中的 MDX 具有相同的功能
- 改进语言工具:升级 Astro VSCode 扩展,由 Volar 提供支持
- Middleware(中间件)
Middleware 目前已到达稳定阶段。该功能支持在页面被渲染并返回给用户之前或之后运行代码。这为 Astro 项目带来了新的控制层,并解锁了用于身份验证、重定向、修改 header 等新 hook。
// src/middleware.ts export async function onRequest(context, next) { // Do something before the request is handled. const response = await next() // Or, do something before the response is returned. return response }
下面是一个示例,说明如何在 Middleware 中实现基本身份验证检查,并将加载的用户上下文传递到页面路由:
// src/middleware.ts // Example: A simple authentication check in middleware. export async function onRequest({ cookies, locals }, next) { // Check for the "sid" user session ID cookie. // Return a 405 (Not Allowed) if the cookie is missing. const sessionId = cookies.get("sid"); if (!sessionId) { return new Response(null, {status: 405}); } // Use your own `getUser()` function to validate the user. // Return a 405 (Not Allowed) if the user isn't real. const user = await getUser(sessionId); if (!user) { return new Response(null, {status: 405}); } // Attach the loaded user to the `locals` object. // Now, it can be read in the page route! locals.user = user; // Return `next()` to return the response. return next(); }
- CSS 内联
Astro 2.6 引入了一个新的配置选项,可以自动将 CSS 的小片段内联到 HTML 中。这种优化可以通过减少加载页面所需的请求和外部样式表的数量来加速大多数页面(尤其是在首次加载时)。现在可以通过在配置文件中设置inlineStylesheets: "auto"
来尝试:
// astro.config.mjs import { defineConfig } from "astro/config" export default defineConfig({ build: { inlineStylesheets: "auto", }, })
- 改进语言工具
Astro 的语言工具通过@astrojs/language-server
的 2.0 版本和 Astro 的 2.0 VSCode 扩展获得了重大升级。此版本完成了对 Volar 的重大重写和内部迁移,以提高性能、功能和稳定性。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
Cinnamon 5.8 发布,Linux 桌面环境
Cinnamon 5.8 桌面环境已经发布,且已经在 Arch Linux 的稳定软件存储库中可用。 Cinnamon 5.8 有几个很酷的新功能,其中之一是 XDG 桌面门户支持,为 Flatpak 应用程序以及 GNOME/libadwaita 应用程序提供更好的兼容性,使得这些应用程序可以截取屏幕截图。此外,该功能还为支持它的应用程序带来了全局黑暗模式设置,共有三个选项可供选择,包括Prefer light、Prefer dark和Let the applications decide。 Cinnamon 5.8 的另一个新特性是支持触摸板、触摸屏和平板电脑上的手势。这些手势可用于窗口管理、工作区管理、平铺以及媒体控制。 工具提示经过重新设计,在各种 GTK 版本(GTK2、GTK3)和 Cinnamon 之间更加一致,并且它们现在也使用强调色。 Cinnamon 中的工具提示现在更大、更圆且边距更大,现在在小程序之间也有一些空间,避免连在一起。 Cinnamon 的默认文件管理器 Nemo 获得了对多线程缩略图的支持。这是一项性能改进,在生成缩略图时需要更少的 CPU 资源,因...
- 下一篇
Eclipse Vert.x 4.4.3 发布,Java 微服务开发框架
Eclipse Vert.x 是一个微服务开发框架,基于事件和异步,依托于全异步 Java 服务器 Netty,并扩展了很多其他特性,以其轻量、高性能、支持多语言开发而备受开发者青睐。 Eclipse Vert.x 版本 4.4.3 现已发布。自 Vert.x4.4.2发布以来已经报告了不少错误,项目团队对此表达了感谢。具体更新内容包括: vertx-jdbc-client 修复与 JDBC SQL 客户端的跟踪集成 vertx-web 将 GraphQL-Java 升级到 20.3 vertx-grpc Vertx grpc protoc 插件 修复了 GrpcMethodCall.serviceName() 中的 IndexOutOfBoundsException 将 PR #59 反向移植到 4.x GrpcMethodCall 中的 IndexOutOfBoundsException 缺少 request/response header/trailer keys 各种修复 支持在 trailers 中返回状态信息 vertx-dependencies 更新到 Netty 4.1...
相关文章
文章评论
共有0条评论来说两句吧...