🔥同样是跨平台支持多种编程语言的 SDK 版本管理器,vmr 和 vfox 有什么区别?该如何选择?🔥

来源: 投稿
作者: osc_29565037
2024-04-29 11:00:00

vfox 是 2023 年底出现的一款用 go 编写的 SDK 版本管理器,由hellogithub引流之后而被大家了解。目前正致力于模仿基于 shell 脚本的版本管理器 asdf-vm 。

https://github.com/version-fox/vfox

vmr 是 **2024 年 3 月**发布的一款用 go 编写的 SDK 版本管理工具,无需插件,开箱即用,同样支持多种语言,覆盖面广

https://github.com/gvcgo/version-manager

下面比较一下二者的差异和优势。

1 、架构方面:

vfox 应该是从 neovim 、g(一款国内程序员写的 go 语言版本管理器)、nvm 、asdf-vm 获取的灵感。它引入 lua 运行时,将版本爬虫部分塞进 lua 脚本中,作为插件系统,一种语言对应一个插件。想要管理某种语言的 SDK ,就需要手动安装对应的插件。这种方式对 vfox 本身而言,带来了一定复杂度。主要在于爬虫程序往往不能够统一,往往插件和主程序需要一起修改,比较麻烦,也不够稳定。好处是,更多的用户可以通过编写 lua 插件的方式参与项目的维护。

vmr 放弃了插件模式。而是剥离了版本爬虫部分,将版本爬虫单独部署在服务器,定时获取版本信息,预处理成统一格式,并同步到版本仓库。vmr 主程序只需获取版本仓库中的 SDK 版本信息,即可方便地展示给用户。这样做可以充分保证 vmr 主程序的稳定性,即使遇到 SDK 列表页面改版或者不稳定之类的情况,也能不受影响。同时,爬虫部分也可以集中精力做更为擅长的事情,因此 vmr 可以轻松地获取到 vfox 目前难以抓到的只在 github release 发布的 SDK 或者工具。当然,vmr 的这种设计有一个缺点,就是最新版本可能有延迟。但是,鉴于一般情况下,SDK 更新的频率并不是很高,每天 2 次的同步频率已经可以满足绝大多数需求。

所以,在架构方面,如果你追求稳定,快速,可以选择 vmr 。如果你追求将来更多样化的插件支持,可以选择 vfox

2 、UI 方面

vfox 目前是简单的 TUI ,基于 pterm 。

vmr 的 TUI 基于bubbletea ,在列表展示,下载进度条方面更美观。支持类似vim的按键操作来遍历展示列表。还能根据选择的列表项目,自动生成下一步的命令并放入系统剪贴板,用户只需粘贴即可。大大减少了用户输入。同时,用户也可以自行编辑粘贴后的命令,这样也保证了灵活性。

3 、下载速度方面

vfox 目前没提到多线程下载。

vmr 支持开启多线程下载,如果源网站支持多线程下载的话。另外,vmr 还能设置反向代理(vmr 免费提供),用于加速 github 项目的 release 内容的下载

4 、支持广度方面

vfox 目前仅仅支持编程语言相关的 SDK ,也有少量其他工具,例如 etcd 等。vfox 有个优势的地方,就是它支持需要编译的 SDK ,但是编译需要特定的系统环境前提。

vmr 目前支持几乎所有 vfox 支持的 SDK ,但少数需要编译的除外。另外,vmr 还支持很多流行的其他 SDK 或工具,例如 bun(一个很火的 js/ts 运行时), protoc ,kubectl, neovim, vscode, lazygit, git-for-windows, vlang, v-analyzer, typst, typst-lsp, odin, upx, asciinema 等等。可以真正做到从零构建开发环境。这些 SDK 或工具很多目前只能从 github release 中获取,目前的 vfox 还无法做到。

5 、版本管理器功能方面

vfox 支持 global, session, project 三种范围模式。

vmr 也支持。实现上略有差异。

6、使用便捷程度方面

vfox可以通过brew之类的系统命令安装,但是插件需要查找并手动输入命令安装。自身的子命令比较多,操作相对繁琐。

vmr可以在主页文档中复制相关命令进行一键安装。此后无需安装任何插件。此外,vmr的子命令较少,用户仅需记住大概6个子命令即可完成所有工作。vmr还可以通过vmr list命令一键查看它支持的SDK列表。

展开阅读全文
点击加入讨论🔥(3) 发布并加入讨论🔥
本篇精彩评论
倒是在PR列表里面发现了这样的评论:“趁项目刚发布,提交一个小小的修复。

PS:看到项目的前言,我啪一下就点进来了,体验之后,感觉就是我一直苦苦追寻的版本管理工具。已安排了go和node的版本,体验很好。已卸载gvm,nvm,vfox,是的,我也挺爱折腾的。

体验下来感觉还有一些值得斟酌的,比如一级参数的语义,以往用习惯gvm,nvm了,他们是 list 展示本地已安装的,listall展示远端所有的,vm则是local为本地,search为列出所有。还有就是没有给单独的install参数,有时候吧,可能是先install,暂时还不打算use,等用的时候再use。当然,这些都是我以往的使用习惯。”,说明还是有人觉得vmr优于vfox的,不信可以自行前往查看,哈哈哈。😂
2024-04-30 17:15
1
举报
3 评论
2 收藏
分享
返回顶部
顶部