现代化静态站点生成器 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 等前端工具提供一级

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 等现代前端框

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

2022-10-21

清理:使用 HTTP 包方法替换 GET POST DELETE... ( #2412 ) test(middleware/auth/jwt): 添加测试TestNewContextAndFromContext ( #2447 ) test(middleware/metadata):补充测试和修改代码风格(#2448) docs(config/etcd): 修复 Load 的缺失步骤 ( #2450 ) [功能] 为 htt

2022-01-06

器。 “一种常见的模式是缓存服务器被配置为只缓存静态文件,这意味着攻击只限于静态文件。即便如此,仍然有很大的影响,因为现代网站严重依赖 JS 和 CSS,删除这些文件会真正影响应用程序的可用性。” 多个 Web 缓存

2023-02-11

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

2023-02-24

、千万PV;支持可视化编辑,多维扩展,全文搜索,全站静态化,SSI,动态页面局部静态化,URL规则完全自定义等为您快速建站,建设大规模站点提供强大驱动,也是企业级项目产品原型的良好选择。 本次发布分为V4.0,V5两个

2023-03-22

调整 sa-token 的集成逻辑 调整 solon.web.staticfiles 插件,静态资源改为固定长度输出 调整 不必要的 @Note 注释,同时缩减内核大小 修复 ColonClient.configLoad(g,k) 不能实时同步配置的问题 修复 FastjsonActionExecutor 配置没启效的问