跳到正文
Hacker News· Velocifyer·· 7 天前AI 评分12

如何快速跳转到 MDN 的随机页面

A quick way to visit a random page on MDN

AI 导读

开发者用 Copilot 在 10 分钟内搭建了一个跳转 MDN 随机页面的小工具:抓取 MDN 的 sitemap、解析 XML、随机取一个 URL 后以 302 重定向过去。代码基于 xml2js 解析,并用 Json2TS Raycast 扩展生成 TypeScript 接口。

正文 · AI 翻译

也许受到 Chris Coyier 那篇关于 WordPress 站点上的 /random 路由 的文章启发,我发现自己对能够直接跳转到 MDN 上的随机页面挺感兴趣。我没有找到现成的明显功能,所以就自己拼凑了一个。这很简单——它获取 MDN 的站点地图,解析 XML,然后抓取一个随机 URL 并重定向到它。

https://mdn-random.kkipp.workers.dev

我非常喜欢用 Copilot 来做这类事情。我不到 10 分钟就搞定了这个东西。这个 Json2TS Raycast 扩展 对于为解析后的 XML 生成 TS 接口也相当有帮助。

以下是完整代码:

import xml2js from "xml2js";
export interface Env {}

interface Sitemap {
	urlset: Urlset;
}
interface Urlset {
	$: $;
	url: UrlItem[];
}
interface $ {
	xmlns: string;
}
interface UrlItem {
	loc: string[];
	lastmod: string[];
}

export default {
	async fetch(
		request: Request,
		env: Env,
		ctx: ExecutionContext,
	): Promise<Response> {
		const mdnSitemap = await fetch(
			"https://developer.mozilla.org/sitemaps/en-us/sitemap.xml.gz",
		);
		// parse xml sitemap
		const sitemapString = await mdnSitemap.text();
		const parsed = await (xml2js.parseStringPromise(
			sitemapString,
		) as Promise<Sitemap>);

		// pick a random url
		const randomIndex = Math.floor(Math.random() * parsed.urlset.url.length);
		const randomUrl = parsed.urlset.url[randomIndex].loc[0];

		// redirect to random url
		return new Response(null, {
			status: 302,
			headers: {
				Location: randomUrl,
			},
		});
	},
};

来源:Hacker News · kevinkipp.com