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