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

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

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

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

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

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

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

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) 的安全版本公开:

import { install } from ‘vue-demi’

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

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

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

import {defineComponent, PropType, h, isVue2} from “vue-demi”
export default defineComponent({
// …
})
但是还是的修改你package 代码:

{
“peerDependencies”: {
“@vue/composition-api”: “^1.4.3”,
“vue”: “^2.6.12 || >=3.2.37”
},
“peerDependenciesMeta”: {
“@vue/composition-api”: {
“optional”: true
}
}
}

猜你喜欢

转载自blog.csdn.net/weixin_43214644/article/details/125989409