您好,登錄后才能下訂單哦!
今天小編給大家分享一下vue3.x項目降級到vue2.7如何解決的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。
原項目為 vue3 + vite + element-plus + pinia + vue-router + typescript 構建
降級后為 vue2.7 + vite + element-ui + pinia + vue-router + typescript
兼容性問題:公司基于 element-ui
開發了自己的一套 ui 組件,并且還有基于 vue2 開發的中臺組件。由于現有的組件庫都是基于 vue2 開發的,完全不兼容 Vue 3。
學習成本:團隊中的開發人員可能需要花費大量時間來學習 Vue 3 的新功能。????
項目需求:項目需求中需要 Vue 3 的新功能的部分我們可以使用 vue2.7 來替代。
vue3 無法兼容 IE10 瀏覽器(雖然覺得沒必要考慮這個,但是種種原因...????
考慮到上面幾點,我想了幾個方法 ????:
微前端:考慮過 qiankun 和 micro-app,但是由于 ui 組件使用的是 vue2 開發所以無法兼容
ui 組件庫+中臺組件庫 升級到 vue3 版本:工程量太大被拒絕
降級項目到 vue2.7:改動較小,邏輯基本無需改動。成本可控
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" // 因為公司有自己的ui庫 這里用element-ui代替
想要把 vue3 的項目降級到 vue2,我們先看下上面的依賴,
vue 肯定是需要改動的
vue-router
也是需要改動:vue-router
默認版本是@4 但是 vue-router@4 只能支持 vue3,以及為了避免更多的問題,所以我們需要改為 vue-router@3 版本。
響應式區別:vue3 使用 proxy
代理,vue2 使用 Object.defineProperty()
選項式 API 和組合式 API
生命周期不同
這里只簡單說明,不做重點
vue 降級
vue-router降級
組件庫降級
pinia或者vuex
eslint等工程化
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");
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-plus
是使用vue3重寫的組件,所以無法應用在vue2的項目中,所以需要重寫安裝 element-ui
npm i element-ui
值得慶幸的是,如果你使用的是 element-ui
,那么你的改動會很少,element-plus
和element-ui
的組件名保持了一致,并且大多數的方法名和屬性也都保持了一致。
官方說明
Pinia 最初是在 2019 年 11 月左右重新設計使用 Composition API 。從那時起,最初的原則仍然相同,但 Pinia 對 Vue 2 和 Vue 3 都有效,并且不需要您使用組合 API。 除了安裝和 SSR 之外,兩者的 API 都是相同的,并且這些文檔針對 Vue 3,并在必要時提供有關 Vue 2 的注釋,以便 Vue 2 和 Vue 3 用戶可以閱讀!
同樣 pinia
作為 vuex
的第五代版本,也是完全兼容vue2和vue3的,所以這部分你也基本不用改動。
值得注意的是 elint
在使用vue3的擴展和vue2是不同的,所以不能直接復制粘貼
其他的交驗倒是沒發現什么問題
使用vite 構建的話 federationPlugin
和 plugin-legacy
會有沖突,暫時無法解決
以上就是“vue3.x項目降級到vue2.7如何解決”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。