主要观点:作者喜欢 RSS 理念,但之前的 RSS 阅读器都不合适,于是自己实现了一个,采用了服务器端渲染(SSR)的技术,此列表主要供自己使用,也对部分博客读者有兴趣,且有助于提升所关注博客的页面排名。
关键信息:
- 最初尝试在浏览器本地存储状态的客户端阅读器因 CORS 失败,因为客户端 JavaScript 只能获取自身页面所在域的资源,而 feed hosted 在其他域。
- 现在将个性化 feed 作为博客构建过程的一部分,hosted 在[https://matklad.github.io/blo...],源文件是blogroll.txt,用简单的链接列表形式,每行一个链接,最初尝试用 OPML 但太复杂不便手动修改。
- 用[https://github.com/MikaelPort...]库获取 blogroll 的代码,包含
blogroll
函数和blogroll_feed
函数,blogroll
函数获取链接列表并处理每个 feed 的条目,blogroll_feed
函数获取 feed 内容并处理条目,只取最新的 3 个帖子。 - 构建过程中将数据转换为 HTML 的代码在
BlogRoll
函数中,通过处理帖子列表生成 HTML 列表。 - GitHub actions 每天午夜重建 blogroll。
重要细节: blogroll
函数先读取content/blogroll.txt
文件得到链接列表,然后用Promise.all
并行获取每个链接的 feed 内容,将所有条目合并后按时间倒序排序,返回前 3 个帖子。blogroll_feed
函数用fetch
获取 feed 内容,用parseFeed
解析,处理每个条目获取标题、链接和日期,只取最新的 3 个帖子。BlogRoll
函数中domain
函数用于获取链接的域名,list_items
通过映射帖子列表生成 HTML 列表项,包含帖子的标题、日期和链接。- GitHub actions 的配置,在
push
到master
分支或每天午夜触发CI
任务,在 Ubuntu 上运行,安装 deno,执行deno task build --blogroll
,上传构建结果到 out/www 目录,然后部署到 pages。 - 还提到另一个相关模式是维护所有时间喜欢的链接列表:[https://matklad.github.io/lin...]。
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。