最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vue3.x項(xiàng)目降級到vue2.7的解決方案

 更新時(shí)間:2023年03月18日 14:42:01   作者:前端小蝸  
Vue2.7是Vue2.x的最終次要版本,下面這篇文章主要給大家介紹了關(guān)于vue3.x項(xiàng)目降級到vue2.7的解決方案,文中通過實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下

把 vue3 項(xiàng)目降級到 vue2 ??

原項(xiàng)目為 vue3 + vite + element-plus + pinia + vue-router + typescript 構(gòu)建

降級后為 vue2.7 + vite + element-ui + pinia + vue-router + typescript

為什么要降級到 vue2 ?

  • 兼容性問題:公司基于 element-ui 開發(fā)了自己的一套 ui 組件,并且還有基于 vue2 開發(fā)的中臺組件。由于現(xiàn)有的組件庫都是基于 vue2 開發(fā)的,完全不兼容 Vue 3。
  • 學(xué)習(xí)成本:團(tuán)隊(duì)中的開發(fā)人員可能需要花費(fèi)大量時(shí)間來學(xué)習(xí) Vue 3 的新功能。??
  • 項(xiàng)目需求:項(xiàng)目需求中需要 Vue 3 的新功能的部分我們可以使用 vue2.7 來替代。
  • vue3 無法兼容 IE10 瀏覽器(雖然覺得沒必要考慮這個(gè),但是種種原因...??

考慮到上面幾點(diǎn),我想了幾個(gè)方法 ??:

  • 微前端:考慮過 qiankun 和 micro-app,但是由于 ui 組件使用的是 vue2 開發(fā)所以無法兼容
  • ui 組件庫+中臺組件庫 升級到 vue3 版本:工程量太大被拒絕
  • 降級項(xiàng)目到 vue2.7:改動(dòng)較小,邏輯基本無需改動(dòng)。成本可控

vue3 和 vue2 的依賴

vue3 所需依賴

    ...  // other
    "vue": "^3.2.31",
    "vue-router": "^4.0.10",
    "pinia": "^2.0.13",
    "vite": "^2.9.1",
    "vue-tsc": "^0.33.9"
    "prettier": "^2.6.2",
    "element-plus": "^2.1.8",

vue2 所需依賴

    ... //other
    "vue": "2.7.5",
    "vue-router": "^3.5.4"
    "pinia": "^2.0.14",
    "vite": "^2.9.9",
    "vue-tsc": "^0.39.5",
    "prettier": "^2.7.1",
    "element-ui": "x.x.x" // 因?yàn)楣居凶约旱膗i庫 這里用element-ui代替

想要把 vue3 的項(xiàng)目降級到 vue2,我們先看下上面的依賴,

  • vue 肯定是需要改動(dòng)的
  • vue-router 也是需要改動(dòng):vue-router 默認(rèn)版本是@4 但是 vue-router@4 只能支持 vue3,以及為了避免更多的問題,所以我們需要改為 vue-router@3 版本。

對比 vue3 和 vu2 的區(qū)別

  • 響應(yīng)式區(qū)別:vue3 使用 proxy 代理,vue2 使用 Object.defineProperty()
  • 選項(xiàng)式 API 和組合式 API
  • 生命周期不同

這里只簡單說明,不做重點(diǎn)

實(shí)踐步驟

  • vue 降級
  • vue-router降級
  • 組件庫降級
  • pinia或者vuex
  • eslint等工程化

vue 降級

npm i vue@2.7.5

將 vue3 的 createApp() 改為 vue.use()

// vue3
import { createApp } from "vue";
const app = createApp(App);
app.use("xxx");
// vue2
import Vue from "vue";
vue.use("xxx");
new Vue({
  //...
}).$mount("#app");

vue-router 降級

npm i vue-router@3.6.5

將vue-router@4.x.x 降級到 @3.x.x

// vue3 + vue-router4
import {
  createWebHashHistory,
  createRouter,
} from 'vue-router'

export const constantRoutes = [
    {
        path: 'xxx',
        component: xxx,
        name: 'xxx',
        meta: {
            hidden: true,
        },
        children: [
            {
                path: '/xxx',
                component: () => import('xxx'),
            },
        ],
    },
    ...
]
const router = createRouter({
  history: createWebHashHistory('/admin'),
  routes: constantRoutes,
})
// vue2.7+ vue-router3

import VueRouter from "vue-router";

export const router = new VueRouter({
  scrollBehavior: () => ({ x: 0, y: 0 }),
  mode: "hash",
  routes: constantRoutes,
});

export const constantRoutes = [
  {
    path: "/xxx",
    name: "xxx",
    component: () => import("xxx"),
    
  },
  ...
];

element-ui

因?yàn)?element-plus 是使用vue3重寫的組件,所以無法應(yīng)用在vue2的項(xiàng)目中,所以需要重寫安裝 element-ui

npm i element-ui

值得慶幸的是,如果你使用的是 element-ui ,那么你的改動(dòng)會(huì)很少,element-pluselement-ui的組件名保持了一致,并且大多數(shù)的方法名和屬性也都保持了一致。

pinia

官方說明

Pinia 最初是在 2019 年 11 月左右重新設(shè)計(jì)使用 Composition API 。從那時(shí)起,最初的原則仍然相同,但 Pinia 對 Vue 2 和 Vue 3 都有效,并且不需要您使用組合 API。 除了安裝和 SSR 之外,兩者的 API 都是相同的,并且這些文檔針對 Vue 3,并在必要時(shí)提供有關(guān) Vue 2 的注釋,以便 Vue 2 和 Vue 3 用戶可以閱讀!

同樣 pinia 作為 vuex 的第五代版本,也是完全兼容vue2和vue3的,所以這部分你也基本不用改動(dòng)。

eslint + husky + prettier + typescript

值得注意的是 elint 在使用vue3的擴(kuò)展和vue2是不同的,所以不能直接復(fù)制粘貼

其他的交驗(yàn)倒是沒發(fā)現(xiàn)什么問題

問題/缺陷

  • 使用vite 構(gòu)建的話 federationPluginplugin-legacy 會(huì)有沖突,暫時(shí)無法解決

總結(jié)

總體來說,讓vue3的項(xiàng)目降級到vue2是不需要重寫的,我們可以盡量的控制修改的代價(jià)。

我們需要注意以下幾個(gè)地方

  • vue-router 的語法和版本
  • vue 的語法和版本
  • ui組件庫的兼容性和標(biāo)簽,屬性,方法
  • eslint的擴(kuò)展問題

雖然vue3給我們的開發(fā)提供了高效,便利的一方面,但是我們在實(shí)踐中還是要考慮到公司的開發(fā)環(huán)境和原有的公共庫,做好調(diào)查。避免給其他開發(fā)人員帶來不必要的麻煩。

到此這篇關(guān)于vue3.x項(xiàng)目降級到vue2.7的文章就介紹到這了,更多相關(guān)vue3.x項(xiàng)目降級vue2.內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • vuejs實(shí)現(xiàn)遞歸樹型菜單組件

    vuejs實(shí)現(xiàn)遞歸樹型菜單組件

    本篇文章主要介紹了vuejs實(shí)現(xiàn)遞歸樹型菜單組件,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-01-01
  • 詳解key在Vue列表渲染時(shí)究竟起到了什么作用

    詳解key在Vue列表渲染時(shí)究竟起到了什么作用

    這篇文章主要介紹了key在Vue列表渲染時(shí)究竟起到了什么作用,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-04-04
  • Vue實(shí)現(xiàn)雙向綁定的原理以及響應(yīng)式數(shù)據(jù)的方法

    Vue實(shí)現(xiàn)雙向綁定的原理以及響應(yīng)式數(shù)據(jù)的方法

    這篇文章主要介紹了Vue實(shí)現(xiàn)雙向綁定的原理以及響應(yīng)式數(shù)據(jù)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2018-07-07
  • VUE3中Element table表頭動(dòng)態(tài)展示合計(jì)信息

    VUE3中Element table表頭動(dòng)態(tài)展示合計(jì)信息

    本文主要介紹了在Vue中實(shí)現(xiàn)動(dòng)態(tài)合計(jì)兩個(gè)字段并輸出摘要信息的方法,通過使用監(jiān)聽器和深度監(jiān)聽,確保當(dāng)數(shù)據(jù)變化時(shí)能正確更新合計(jì)結(jié)果,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-11-11
  • Vue.js實(shí)現(xiàn)的購物車功能詳解

    Vue.js實(shí)現(xiàn)的購物車功能詳解

    這篇文章主要介紹了Vue.js實(shí)現(xiàn)的購物車功能,結(jié)合實(shí)例形式分析了vue.js購物車的原理、數(shù)值計(jì)算及頁面元素屬性動(dòng)態(tài)操作相關(guān)實(shí)現(xiàn)技巧,需要的朋友可以參考下
    2019-01-01
  • vue2.0移動(dòng)端滑動(dòng)事件vue-touch的實(shí)例代碼

    vue2.0移動(dòng)端滑動(dòng)事件vue-touch的實(shí)例代碼

    這篇文章主要介紹了vue2.0移動(dòng)端滑動(dòng)事件vue-touch的實(shí)例代碼,需要的朋友可以參考下
    2018-11-11
  • Vue自定義指令實(shí)現(xiàn)按鈕級的權(quán)限控制的示例代碼

    Vue自定義指令實(shí)現(xiàn)按鈕級的權(quán)限控制的示例代碼

    在Vue中可以通過自定義指令來實(shí)現(xiàn)按鈕權(quán)限控制,本文主要介紹了Vue自定義指令實(shí)現(xiàn)按鈕級的權(quán)限控制的示例代碼,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-05-05
  • 詳解elementUI中input框無法輸入的問題

    詳解elementUI中input框無法輸入的問題

    這篇文章主要介紹了詳解elementUI中input框無法輸入的問題,文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2020-04-04
  • Vue中添加手機(jī)驗(yàn)證碼組件功能操作方法

    Vue中添加手機(jī)驗(yàn)證碼組件功能操作方法

    組件是Vue.js最強(qiáng)大的功能之一。組件可以擴(kuò)展HTML元素,封裝可重用的代碼。這篇文章主要介紹了VUE 中添加手機(jī)驗(yàn)證碼組件,需要的朋友可以參考下
    2017-12-12
  • 詳解vue 不同環(huán)境配置不同的打包命令

    詳解vue 不同環(huán)境配置不同的打包命令

    這篇文章主要介紹了詳解vue不同環(huán)境配置不同的打包命令,主要包括正式環(huán)境、測試環(huán)境和開發(fā)環(huán)境,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-04-04

最新評論

日照市| 剑河县| 广安市| 呼玛县| 葵青区| 南安市| 永清县| 南靖县| 绥德县| 舒城县| 永康市| 新乐市| 富裕县| 红原县| 志丹县| 辽阳县| 黄浦区| 濉溪县| 乐安县| 阳城县| 武鸣县| 湖北省| 英山县| 宜都市| 洞头县| 临城县| 福泉市| 卢龙县| 象州县| 临泽县| 通海县| 灯塔市| 比如县| 齐齐哈尔市| 平南县| 柘荣县| 赞皇县| 随州市| 陇川县| 连山| 巴林右旗|