Skip to content

Vue 3 迁移受阻,作者自研 Vue Pick 替代 vue-select 与 vue-treeselect ​

译注:本文编译自 dev.to 用户 szwn 的技术分享,原文标题为《Vue-Select and Vue-Treeselect never got a stable Vue 3 release, so we replaced them》,链接见文末。文中观点与方案均来自原作者,供正在做 Vue 3 迁移的开发者参考。

迁移顺利,唯独下拉组件卡住了 ​

作者正在把一个大型应用从 Vue 2.7 迁移到 Vue 3。大部分代码都能顺利移植,但下拉选择组件成了例外。

该应用大量使用 vue-select 和 vue-treeselect。问题在于:

  • vue-select 仅通过其 4.0 beta 版本支持 Vue 3,而最后一个 beta 发布于 2022 年 11 月;
  • vue-treeselect 的最后一次发布是在 2019 年 10 月,且只支持 Vue 2。

也就是说,这两个库都无法跟随项目一起升级到 Vue 3。

现成的 fork 解决不了渐进迁移 ​

这两个库都存在社区维护的 Vue 3 fork,但它们只支持 Vue 3。这意味着在正式切换之前,项目仍要在 Vue 2.7 上继续运行旧库,等到切换那天再一次性替换所有下拉组件——这种「大爆炸式」替换风险高、工作量大。

Vue Pick:一套 props,同时兼容 Vue 2.7 与 Vue 3 ​

为此,作者编写了 Vue Pick。它是一个同时运行在 Vue 2.7 和 Vue 3 上、且使用相同 props 的组件。

这样一来,团队可以在仍处于 Vue 2.7 阶段时就先替换掉旧的下拉组件,等切换到 Vue 3 后它们依然可用。届时唯一需要改动的是导入路径:从 vue-pick/vue2 改为 vue-pick。

在功能上,Vue Pick 覆盖了原先使用那两个库的场景:

  • 搜索
  • 多选
  • 带父子复选框的树形选择,包括从服务端加载子节点

此外,它没有任何运行时依赖,唯一需要的就是 Vue 本身。

适用人群 ​

作者表示,如果开发者同样受困于 vue-select 和 vue-treeselect 这两个库,Vue Pick 或许能节省一些时间。

项目地址:

原文链接 ​

https://dev.to/szwn/vue-select-and-vue-treeselect-never-got-a-stable-vue-3-release-so-we-replaced-them-d47