如何從 vue-element-admin 遷移到 Fantastic-admin


如果你還不知道 Fantastic-admin 是什么,那么我先用幾張預覽圖給大家了解一番。

看來預覽圖,如果你感興趣,可以點這里來詳細了解並試用,這是一款完成度極高,開箱即用的后台框架,並且剛剛發布了 Vue3 版本支持。

回歸正題

vue-element-admin 做為一款知名度相當高的后台框架,是很多剛接觸后台開發的開發人員首選框架,但由於其作者似乎並不太關注這款作品,並且也無任何 Vue3 版本的相關動向,導致在 Github 倉庫里堆積了近千個未關閉的 issues 。

開發者在使用過程中遇到的很多問題,在其社區里提供的解決方案都是需要修改框架源碼,這也讓市面上出現了很多基於 vue-element-admin 的魔改版本。但大部分也只是小修小改,如果要修改到框架本身的設計,都是牽一發而動全身的。這也是我早期使用 vue-element-admin 開發后的一些感觸,於是才下定決定自己寫一套可高度配置化的后台框架。

雖然上面說的已經是我幾年前的經歷了,但相信現在依舊有很多開發者還在使用 vue-element-admin ,有的想找替代產品,但又嫌遷移工作太麻煩,畢竟遷移工作的前提是要了解兩套框架的差異,才可以確保遷移工作的正常進行。

那么這篇文章,將會盡可能詳細的介紹 vue-element-admin 和 Fantastic-admin 在使用上的差異,給還在猶豫是否要替換 vue-element-admin 的小伙伴一點點參考。

因為 Fantastic-admin 已經提供了 Vue3版本 ,所以本篇文章會以 Vue3版本 為最終遷移目標。當然 Vue2版本 在大部分情況下也適用。

准備工作

首先你需要准備一份 Vue3版本 的模版源碼,並確保能在本地正常啟動運行。

# 最簡單的方式,克隆一份源碼到本地
git clone -b template https://gitee.com/hooray/fantastic-admin.git

# 然后進入項目
cd fantantic-admin

# 安裝依賴
pnpm install

# 運行
pnpm run dev

其次建議你先完整閱讀一遍 Fantastic-admin 的文檔后,對其有個大致的了解后,再閱讀下面的差異。

差異

環境配置

得益於 vue-element-admin 的功能簡單,環境配置里只能設置 VUE_APP_BASE_API ,在 Fantastic-admin 里對應的是 VITE_APP_API_BASEURL 這個參數。

當然在 Fantastic-admin 還提供了頁面標題、調試工具、構建壓縮等一系列的配置,詳細可閱讀《配置 - 環境配置》。

框架配置

vue-element-admin 一共只提供了 6 個配置項(title showSettings tagsView fixedHeader sidebarLogo errorLog),並且大部分都是界面布局上的設置,建議這部分可直接參考 Fantastic-admin 的框架配置文件,我們提供了更豐富的界面布局設置。

主題

很遺憾,vue-element-admin 沒有提供主題配色的功能,而 Fantastic-admin 里可以自定義主題配色方案,詳細可閱讀《主題》。

全局資源

SVG 圖標

vue-element-admin 將 svg 文件存放在 ./src/icons/svg/ 目錄下,這部分的 svg 文件可直接拷貝到 Fantastic-admin 的 ./src/assets/icon/ 目錄下,並且我們還提供了 <svg-icon /> 組件方便直接使用,詳細可閱讀《全局資源 - SVG圖標》。

圖片

vue-element-admin 將圖片存放在 ./src/assets/ 目錄下,這部分的圖片資源可直接拷貝到 Fantastic-admin 的 ./src/assets/images/ 目錄下即可。

精靈圖

這是 Fantastic-admin 單獨提供的特性,如果在項目中使用了較多尺寸不大的素材圖,你可以考慮使用精靈圖的方式將多張小圖合並成一張大圖,通過 css 背景圖定位的方式去展示使用,詳細可閱讀《全局資源 - 精靈圖》。

樣式

vue-element-admin 將樣式存放在 ./src/styles/ 目錄下,這個目錄存放的基本是和框架相關的樣式,遷移過程中基本是無需關注的,你只需要關注你新增的樣式文件,將這些文件拷貝到 Fantastic-admin 的 ./src/assets/styles/ 目錄下,並在相關使用到的地方引入即可。

另外 Fantastic-admin 還提供了一個 ./src/assets/styles/resources/ 目錄用來單獨存放 SCSS 資源,這個目錄下的文件會被框架自動引入,可在頁面上直接使用,詳細可閱讀《全局資源 - 樣式》。

組件

vue-element-admin 將組件存放在 ./src/components/ 目錄下,並且使用時需要單獨注冊,而 Fantastic-admin 提供的全局組件會在使用的時候自動注冊,效果與 vue-element-admin 一致,但使用體驗卻更棒。你只需將全局組件同樣放到 Fantastic-admin 的 ./src/components/ 目錄下即可在頁面中直接使用,詳細可閱讀《全局資源 - 組件》。

與服務端交互

vue-element-admin 的 ./src/utils/request.js 對應了 Fantastic-admin 的 ./src/api/index.js 文件,它們都對 axios 進行了封裝,便於統一處理 POST 和 GET 請求,你可以根據原有的配置逐行遷移代碼。

另外在 vue-element-admin 的 ./src/api/ 目錄下存放了以模塊為維度拆分的獨立文件,方便統一管理不同模塊的所有接口請求,這在大型項目中是很有必要的,而 Fantastic-admin 並未提供特定目錄,如果你有這個需求,可以自行建立一個文件夾用來管理這部分文件。

路由

Fantastic-admin 借鑒了 vue-element-admin 通過路由生成導航欄的思路,都是在路由里增加導航配置參數,只不過 Fantastic-admin 將額外的導航配置參數統一都放在的 meta 對象中。下面這個對比表格能幫助里快速了解 vue-element-admin 和 Fantastic-admin 對應的配置項。

vue-element-admin Fantastic-admin 說明
hidden meta.sidebar 是否在導航欄里顯示
alwaysShow / 並未提供該設置,因為在 Fantastic-admin 里自動處理的
meta.roles meta.auth Fantastic-admin 可兼容 vue-element-admin 的權限設計模式,並提供了更高級的權限模式
meta.title meta.title 導航標題
meta.icon meta.icon 導航圖標
meta.noCache meta.cache vue-element-admin 的 noCache 與 Fantastic-admin 的 cache 都是對頁面緩存的配置,但背后的邏輯和使用方式卻完全不一樣
meta.breadcrumb meta.breadcrumb 是否在面包屑導航里顯示
meta.affix / 標簽頁是否固定,在 Fantastic-admin 中,標簽頁是可以通過右鍵標簽頁手動設置固定,而非在路由配置里固定寫死
meta.activeMenu meta.activeMenu 高亮指定導航

除了以上 vue-element-admin 提供的配置項之外,Fantastic-admin 還提供了很多額外的配置項,詳細可閱讀《路由 - 導航配置》。

頁面緩存

在 Fantastic-admin 里你可以理解只有二級路由緩存,因為我們提供了一個特性,不管路由配置多少層級,最終都會被處理成二級,但是可以放心,僅僅是路由被處理成二級,而導航和面包屑導航依舊是保持原有的層級結構展示。

這么做的目的也是為了徹底解決多級路由緩存的問題,相信你一定在 vue-element-admin 里遇到過這類問題,社區里的解決方案也五花八門,始終沒有一個統一的解決方案。

所以 Fantastic-admin 提供了一個一勞永逸的解決辦法,詳細可閱讀《頁面緩存》。

最后

本篇遷移文檔僅對整體做簡單說明,遷移項目畢竟是個龐大工程,過程中難免會出現各種無法預測的問題,建議可以加討論群自由討論尋求幫助。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM