今天把我压箱底的web-replayer公开发布了

广告位招租
扫码页面底部二维码联系

在开源Anys之后,我再次把自己的压箱底作品公开发布。在此之前,我一直的想法是密而不发,毕竟现在的伸手党实在是太多了,白嫖过去用,一分钱不掏,最后还可能被喷。虽然开源本身是非常好的,可以促进技术的发展,相互学习,一起创造出一些有意思的东西出来。然而,由于环境不好,好好的一件事,最后搞的不愉快。因此,我现在开源也好,公开发布新东西也好,也都留了一个心眼,避免卷入这些内耗纷争。

今天发布的是我在后台用来进行日志回放的播放器,取名web-replayer,见名知意。

https://www.npmjs.com/package/web-replayer

简单讲它就是一个用代码来进行演示的播放器。什么意思呢?就是它让你的代码执行,像播放器播放视频一样进行执行。我们使用anys的一个能力,就是录制前端页面的变更,用户的行为等等。那么当这些数据进入数据库之后,通过web-replayer,就可以把这些日志数据取出来进行回放,这样我们就可以在web-replayer中,看到用户的操作,以及当时的情况。那么具体怎么把一条条日志数据进行播放呢?这里就需要引入视频里面的“帧”的概念,理论上,1条日志就是1帧。因此,我们只需要把这些一帧一帧的过程,在web环境下给它呈现出来。怎么呈现呢?当然是操作DOM了。因此,我们只需要提供每一帧,如何操作DOM即可。如何操作DOM,则是依赖日志本身,当我们看到是一条mousemove的日志时,我们就操作DOM里面用来模拟鼠标的元素进行移动;当我们看到是一条snapshot的日志时,我们就直接用HTML镜像覆盖当前的DOM。这样,我们把对每一条日志对应的DOM操作都写好之后,我们只需要按照时间的流逝,不断去执行这些动作即可。这就是web-replayer的底层思路。当然,它自己还有一些其他方面的设计和考虑,但是核心思路就在这里。

基于这一思路,web-replayer不单单可以用来回放日志,你甚至可以用来实现一段视频,因为你可以在帧上操作图片、声音等素材,通过代码来编写这些东西,就可以实现一种神奇的“用代码做视频”的效果。

好了,如果你有兴趣,不妨通过上面的链接去下载和使用web-replayer。最后,我使用了较为严格的license,主要是防止某些不良服务商白嫖。如果你是个人,且不需要对源码进行修改,也不需要部署自己的服务,那么可以随便使用。