为何我的部分轻量插件的体积十分“庞大”?

有朋友和我说 “一个自动领奖插件就快400kb,是不是太臃肿了?”。 我觉得针对这种问题应当统一作出解释。

关于用户体验

这其实是一种个人代码风格的选择,不同开发者的风格也大多不相同。在很早的时候,我和这位朋友一样,对于一个明明功能很简单的插件打包了许多类库这种事情感到十分可笑。但随着我接的各种小单子越来越多,接触的用户越来越多,我发现程序员思维在这里似乎并不适用。

其实这种问题只要做一个核心类库插件就全部解决了。但作为用户来说,相比于要额外安装一个依赖插件,我更喜欢开箱即用的感觉,而非安装一个插件需要额外安装许许多多杂七杂八的类库。举个例子,如果我想使用一个插件,需要额外安装作者的一个类库;如果要使用的插件来自于多个作者,岂不是需要额外安装许许多多的类库?

因此,作为一个插件覆盖面并不广泛的开发者,我选择每个插件都单独打包类库,而让用户无需对此焦虑。

关于高版本接口

这时候又有人想问“为何不使用高版本提供的依赖接口,直接让服务端下载依赖使用,从而减小插件的大小呢?”

其实理由已经出现在问题里了。没错,这个功能需要“高版本”。

相比于为了减小插件体积而使用这个功能,以导致只有高版本才可以使用,我更倾向于让一个插件能够覆盖到更多的版本,从而减少用户的选择成本。

让我们回到用户的视角,面对一个功能需求上很适合自己的插件,却因为版本过低而无法使用,而这的原因仅仅是开发者为了让插件看上去更“轻量化”去使用高版本的依赖接口从而失去了低版本用户的支持,我相信,这个时候用户更希望的是在自己的服务器也能用上这款插件,而不是我们需要的“轻量化”。

总结

总而言之,是否打包类库到插件纯属开发者的个人习惯。有的人喜欢“轻量”而自行挑选重要内容放到自己的插件中,有的人更爱“便捷”而一股脑全塞上,也有的人会为了“用户体验”而做出一点大小上的牺牲。

如果是三年前的我,我会强烈推荐你做一个“依赖库插件”,它能够很好的解决插件实际功能和大小不等的问题同时还能让这个插件在不同的服务器版本中得到支持;
但如果是现在的我,我会推荐你好好考虑,对于单个功能插件,在必要的情况下直接打包依赖库也完全没问题的:虽然需要在“轻量化”上做出一些牺牲,但可以让使用的用户得到更好的体验,在我看来这是一个更好的决定。


文章作者为 @CarmJos ,同时感谢 @nelson 帮助校对文章。