vue2升级vue3:Vue Demij打通vue2与vue3壁垒,构建通用组件

如果你的vue2代码之前是使用vue-class-component 类组件模式写的。选择可以使用 https://github.com/facing-dev/vue-facing-decorator 来进行低成本的升级,但是升级难度还是蛮大的。

如果你之前的vue2 版本使用的是 @vue/composition-api,那么 Vue Demi  以后可以无缝升级vue3.

 

Vue Demi 是一个很棒的包,具有很多潜力和实用性。

根据创建者 Anthony Fu 的说法

Vue Demi 是一个开发实用程序,允许你为 Vue 2 和 3 编写通用 Vue 库。而无需担心用户安装的版本

作者Antfu的介绍博客: https://antfu.me/posts/make-libraries-working-with-vue-2-and-3

vue-demi库:https://github.com/vueuse/vue-demi

以前,要创建支持两个目标版本的 Vue 库,我们会使用不同的分支来分离对每个版本的支持。对于现有库来说,这是一个很好的方法,因为它们的代码库通常更稳定。

缺点是,你需要维护两个代码库,这让你的工作量翻倍。对于想要支持Vue的两个目标版本的新Vue库来说,我不推荐这种方法。实施两次功能请求和错误修复根本就不理想。

 

这就是 Vue Demi 的用武之地。Vue Demi 通过为两个目标版本提供通用支持来解决这个问题,这意味着您只需构建一次即可获得两个目标版本的所有优点,从而获得两全其美的优势。

  • 通用Vue库。意味着这大多数情况下不是业务开发者会直接使用到的库,主要面向库开发者(vue组件库/vue插件 等)

  • 开发工具。供库开发者使用的工具,也就是说业务开发者不实际感知到它;

Vue Demi 扮演的角色

 

 

在 Vue 2 中,Composition API 作为插件提供,在使用它之前需要安装在 Vue 实例上:

1
2
3
4
import Vue from 'vue' 
import VueCompositionAPI from '@vue/composition-api' 
 
Vue.use(VueCompositionAPI)

Vue Demi 会尝试自动安装它,但是对于您想要确保插件安装正确的情况,提供了 install() API 来帮助您。

Vue Demi使用了NPM钩子postinstall。当用户安装所有包后,脚本将开始检查已安装的Vue版本,并根据Vue版本返回对应的代码。在使用Vue 2时,如果没有安装@vue/composition-api,它也会自动安装.

它作为 Vue.use(VueCompositionAPI) 的安全版本公开:

1
2
3
import { install } from 'vue-demi' 
 
install()

在实际的代码中,直接用就好

当你使用vue Api时,请从vue-demi里导入,它会自动根据用户使用的环境,而被重定向到vue@3.x或者vue@2.x + @vue/composition-api

当用户要创建一个Vue插件/库时,只需将vue-demi安装为依赖项并将其导入,然后像之前一样发布你的插件/库,用户的软件包就会变得通用。

1
2
3
4
import {defineComponent, PropType, h, isVue2} from "vue-demi" 
export default defineComponent({
  // ... 
})

但是还是的修改你package 代码:

1
2
3
4
5
6
7
8
9
10
11
{
  "peerDependencies": {
    "@vue/composition-api""^1.4.3",
    "vue""^2.6.12 || >=3.2.37"
  },
  "peerDependenciesMeta": {
    "@vue/composition-api": {
      "optional"true
    }
  }
}

 

 

参考文章:

使用 Vue Demi 构建通用的 Vue 组件库 https://developer.51cto.com/article/700797.html

一库】vue-demi: 一拳打穿vue2和3的版本次元壁 https://juejin.cn/post/7032860019880099847

Vue Demi https://madewith.cn/502

 

 


转载本站文章《vue2升级vue3:Vue Demij打通vue2与vue3壁垒,构建通用组件》,
请注明出处:https://www.zhoulujun.cn/html/webfront/ECMAScript/vue3/8866.html

posted @   zhoulujun  阅读(1495)  评论(0编辑  收藏  举报
相关博文:
阅读排行:
· 分享4款.NET开源、免费、实用的商城系统
· 全程不用写代码,我用AI程序员写了一个飞机大战
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· 记一次.NET内存居高不下排查解决与启示
· 白话解读 Dapr 1.15:你的「微服务管家」又秀新绝活了
历史上的今天:
2021-07-25 web自动化测试(2):选择selenium优势?与PhantomJS/QTP/Monkey对比
2021-07-25 web自动化测试(1):再谈UI发展史与UI、功能自动化测试
点击右上角即可分享
微信分享提示