因为最近在新加坡出差,比较关心这边的疫情。而各个网站提供的报表都不尽如人意。所以就尝试自己做一个报表。

拆分问题

我们需要一个可靠的数据来源(不是百度)。这个数据源最好是新加坡官方发布的,或者采集于官方数据。然后选择合适的报表组件进行展示。

报表预览

数据源

官方

官方的数据,没有简便好用的json形式的历史数据(也许是我没有找到)

www.zaobao.com.sg

这个网站上的数据,是在html里面写死的。而且不同时期的数据,是在不同的网页上。

infographics.channelnewsasia.com

这个网站提供的json数据挺全的。但是有常见的跨域限制。

解决跨域限制

首先想到的是通过服务器转发,或者serverless这样的服务。而我没有海外服务器(这个网站在国内无法访问)

目前提供Serverless服务的厂商,大概有如下几家

  • AWS
    • 这个就不必多介绍了,想必大家应该都接触过。但是他家的 serverless 我倒是没接触过
  • cloudflare
    • 群里面用的Github加速就是通过这家的服务实现的
  • Github
    • GitHub Actions 是为CI提供的一个环境

因为静态博客是在GitHub上托管的,因此先从 GitHub Actions 开始调研。如果 GitHub Actions 支持如下功能,则可以使用

  • 发起网络请求(wget、curl)
  • 提交代码(当前仓库)

很幸运,都支持(Actions的就不在这里展开了)
实现方案:通过 Actions 将数据保存到当前仓库。因为当前仓库是 GitPage ,所以这个数据就可以被当前网站使用了。

报表

直接上手了百度开源的报表组件 echarts

其实目前好用的报表组件并不多,百度这个历经这么多年依然健在。可见其生命力之顽强。

成品结果如下
结果