现代化静态站点生成器 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 的重大重写和内部迁移,以提高性能、功能和稳定性。

详情查看发布公告。


相關推薦

2022-08-11

Astro 是一款现代化的轻量级静态站点生成器,具有出众的开发者体验 (Developer Experience)。据介绍,虽然 Astro 从诞生到今天只有 16 个月,但其仓库的 star 数已超过 13000,并且在全球拥有超过 30000 名用户。目前,Astro 文档已被翻译

2023-07-26

令 优化脚本打包 详情查看发布说明。 Astro 是一款现代化的轻量级静态站点生成器,具有出众的开发者体验 (Developer Experience)。 Astro 其他特性: 自带组件框架:Astro 为 React、Vue、Svelte 和 Tailwind CSS 等前端工具提供一级

2024-08-23

1.基于JAVA标准, 支持国产信创环境,国产数据库以及国产中间件 ,能高效便捷的进行站点文档采编,审核,页面模板制作。具有性能优秀,稳定,安全,易扩展等特点,适合建设政府机构,教育部门以及企事业单位的站群系统

2024-09-26

自主研发,支持主流国产信创环境,国产数据库以及国产中间件。安全,稳定,经过多次政务与企事业单位项目长期检验,顺利通过等保二,三级评测。 2.高效便捷的进行站点文档采编,审核,页面模板制作。具有性能优秀,

2023-11-11

来版本中的一些令人兴奋的功能包括:全功能虚拟键盘、静态全屏 GUI 旋转、渐变、硬件加速 JPEG、支持自定义图像解码器、CMSIS 包等等。 详情查看 Changelog。

2024-03-26

的精神继承者和现代替代品。” VitePress 是一个静态站点生成器 (SSG),专为构建快速、以内容为中心的站点而设计。简而言之,VitePress 获取用 Markdown 编写的内容,对其应用主题,并生成可以轻松部署到任何地方的静态 HTML 页面

2023-02-03

Gatsby 又构建了一个用于构建、部署和预览大型企业内容站点的云平台,此后收入年增长率超过 100%。 Netlify 首席执行官 Matt Biilmann 对此称: 我们会将 Gatsby 的云创新集成到 Netlify 平台中,并向 Astro、Next 和 Remix 等现代前端框

2024-06-26

rivacy): 重命名 privacy 模板并优化 ent 模板输出逻辑 新增(middleware): 新增 extra middleware 命令,用于生成 api 和 rpc 的额外中间件 新增(middleware): 新增 authority 以及 authority_tenant 中间件 修复(gateway): 修复 gateway 命令 新增(gateway):

2023-09-19

Docusaurus 是 Facebook(现更名为 Meta)开源的静态网站生成器。它将你的网站构建成一个单页面应用程序 (single-page application),具有快速的客户端导航功能并充分利用了 React 的强大能力,为网站赋予更好地交互性。虽然 Docusauru

2022-05-21

void main() { auto app = new Archttp; app.use((req, res, next) { writeln("middleware 1 .."); next(); }); app.use((req, res, next) { writeln("middleware 2 .."); next(); }); app.use((req, res, next) { writeln("middleware 3 .."); next(); }); app.use((req, es, next) { writeln("middleware 4 .."); });

2023-11-04

Deno 1.38 已正式发布。 公告写道,此版本为deno doc命令引入了重大改进,其中包括使用deno doc --html生成静态站点文档的能力。另外改进了 Node.js 兼容性、支持 HMR(模块热更新)。 主要变化 改进deno doc:新的 deno doc --html&nb

2022-12-17

on handler(req: Request) { return new Response("Hello World"); } 与 Edge Middleware 不同,Functions 在缓存之后运行;因此既能缓存又能返回响应,非常适合数据获取或重写。Next.js 和许多其他框架(如 Nuxt、Astro 和SvelteKit)都原生支持 Vercel Edge Func

2024-08-02

研发、功能丰富、开源开放的深度学习平台,从默认使用静态图的1.0版本,到默认采用动态图并可实现动静统一与训推一体的2.0版本发布,飞桨框架已经可以完美融合动态图的灵活性与静态图的高效性,并支持模型的混合并行训

2023-02-11

IntelliJ IDEA 2023.1 EAP 4 现已发布。带来了 macOS 上新 UI 的 project tabs 和对 Astro 框架的支持。还引入了对 profiler 的火焰图的改进、更新了 Coverage view,以及期待已久的禁用 hashes 和 special values 拼写检查。 macOS 新 UI 中的 Project