计划:用 Node.js 重写 GBF-RaidFinder

最近产生了一个“大胆”的想法,就是用 Node.js 来重写 walfie/gbf-raidfinder 这个被许多骑空士使用着的项目。

为什么想要重写?

因为原项目是用 Scala 写的,运行在 JVM 上,虽然 JVM 跨平台的能力比较强,但它相对比较“臃肿”,而且构建、更新起来比较慢。可以是可以用作者提供的 Docker 镜像直接部署,但是之前因为 Docker 不兼容于 4.9 以上的内核,而我又比较依赖于 bbr 这玩意儿所以就没用 Docker 而是直接跑在系统的 JVM 上。

那么为什么想用 Node.js 重写,Node.js 相比较于 JVM, 保证了一定的跨平台能力的同时更为轻量化,版本迭代的代价也更低一些。最主要的是,我想通过这次重写来学习 Node.js 和 Javascript, 因为这个项目是 C/S 架构的,也能学习一定的全栈能力。

重写方案

在重新简要查看了原作者的实现之后,我得出了“这不是我短时间就能重写出来”的结论,原因如下:

  • 原作者使用了 WebSockets 这项技术来实现列表的实时更新
  • 原作者使用的许多库不知道在 npm 有没有类似的替代品
  • 原作者写的 Boss 列表自更新是一大难点
  • 我在 JS 和 Node.js 上都只是一个初学者

那么就一步一步地来,先写出一个 Twitter 的搜索模块,再学 WebSockets 然后把实时更新给实现了,然后把自更新实现了,最后把几个部分整合到一起,差不多重写就完成了。我给这个坑留半年到一年的时间,希望明年的现在我已经填完这个坑了。

>>endl;

Progressive Web App

什么是 PWA

前不久了解到 Progressive Web App 这个在2015年就已经由 Chrome 项目组提出来的概念,A selection of Progressive Web Apps 这个站点上收录了许多支持 PWA 的网站,不乏有可用性非常高的 Telegram Web 和知名的 Flipboard 应用的网页版。

PWA 是什么?直译过来就是渐进式网络应用。特性有很多,想要了解具体的直接看 Progressive Web App, 这里只举我最看重的几点:

  • 轻量 & 离线可用

    跟普通的网页没啥区别,加载快。而且不像 Hybrid App 那样还是依赖于一个本地的 App 壳子,需要你去 App Store 安装

    PWA 在 Android 上保存到 Home Screen 之后就会自动编译生成一个 APK 安装进系统中,也就意味着,它不止是一个网页,而已经成为了一个本地应用,离线状态下也是可用的(当然依赖于网络的东西就不行了)。而这一过程相当快,所要耗费的网络流量也远远小于 Native/Hybrid App

  • 本地通知支持

    在添加在本地之后,PWA 就拥有了本地通知能力,因为在 Android 上是通过 GCM 实现的,所以国内这点并不好用,微博 PWA 就干脆没有写通知的功能

  • All in Browser

    其实这点就是第一点的补充,一个浏览器干所有的活,不用装那么多又大更新还要开 App Store 的应用。而这一点也包括在所有平台上都有同样的用户体验,虽然目前的 PWA 界面多是为移动设备而设计,但是至少我在 PC 上能一样很方便的用到它,而不是通过虚拟机或者其他手段。

我记得在早期 iPhone 刚发布的时候,Apple 的想推广的就是 Web App, 让用户可以用一个 Safari 干所有的活(可笑的是现在 iOS 还没支持 PWA),可惜当时的前端远远没有今天那么多好用新颖的技术,那时的移动设备性能也满足不了使用非原生代码的开销,所以最后 Apple 妥协了,推出了 App Store 直到今天。而现在 PWA 的推出,多了一个“渐进式”的前缀形容词,没有前几年强推 Web App 的那种势头,更加务实的风格更能被人们接受。

目前比较有用的 PWA 站点

其他的可以上 A selection of Progressive Web Apps 看,虽然好像都是国外的而且好久没有更新了。

怎么安装

非常简单,用你的 PC 版 Chrome 或者 Chrome Android 打开上一节的随意一个站点,等待一会儿就会有一条提示你可以添加到主界面的横幅在下方出现,点击即可。或者你可以手动使用“添加到主界面”的功能来实现。

>>> endl;