码农知识堂 - 1000bd
  •   Python
  •   PHP
  •   JS/TS
  •   JAVA
  •   C/C++
  •   C#
  •   GO
  •   Kotlin
  •   Swift
  • 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

  • 相关阅读:
    [附源码]计算机毕业设计springboot餐馆点餐管理系统
    web前端期末大作业:青岛旅游网页主题网站设计——青岛民俗4页 HTML+CSS 民俗网页设计与制作 web网页设计实例作业 html实训大作业
    代码随想录Day16 LeetCode T654 最大二叉树 T617 合并二叉树 T700 二叉搜索树中的搜索
    线性表的定义和基本操作
    实验27:红外遥控三级控速风扇实验
    GreenPlum扩容节点
    基于机器学习的曲面拟合方法
    springboot电子阅览室app毕业设计源码016514
    C#运算符和流程控制语句
    您的私人办公室!-----ONLYOFFICE8.1版本的桌面编辑器测评
  • 原文地址:https://www.cnblogs.com/zhoulujun/p/16519276.html
  • 最新文章
  • 沪漂五周年了:我越来越迷茫了
    Agentic Skill Routing 实战:别再把所有 Skill 塞进 AI Agent 上下文
    MySQL-Seconds_behind_master的精度误差
    [MAF预定义ChatClient中间件-03]CachingChatClient——利用缓存省钱省时间
    AI的至暗历史:从万众期待到被政府撤资,AI的两次死亡徘徊
    Agent OS :五种驯服不确定性的范式
    PortSwigger SQL注入LAB11
    数据库即时编译JIT
    [Begin]AI Learn Data Day 0
    深度学习进阶(二十七)现代 LLM 的核心架构设计其二:SwiGLU
  • 热门文章
  • 十款代码表白小特效 一个比一个浪漫 赶紧收藏起来吧!!!
    奉劝各位学弟学妹们,该打造你的技术影响力了!
    五年了,我在 CSDN 的两个一百万。
    Java俄罗斯方块,老程序员花了一个周末,连接中学年代!
    面试官都震惊,你这网络基础可以啊!
    你真的会用百度吗?我不信 — 那些不为人知的搜索引擎语法
    心情不好的时候,用 Python 画棵樱花树送给自己吧
    通宵一晚做出来的一款类似CS的第一人称射击游戏Demo!原来做游戏也不是很难,连憨憨学妹都学会了!
    13 万字 C 语言从入门到精通保姆级教程2021 年版
    10行代码集2000张美女图,Python爬虫120例,再上征途
小工具 小游戏
Copyright © 2022 侵权请联系2656653265@qq.com    京ICP备2022015340号-1

京公网安备 11010502049817号