前言
如果 2021 年你還沒有聽説過 Fantastic-admin ,那即將到來的 2022 年可不要再錯過了。
Fantastic-admin 做為一款開箱即用的 Vue 中後台管理系統框架,距離首次面向大眾已經過去一年多的時間了,在這一年多的時間裏,我們服務了數百個團隊和個人開發者,應用在近千款的產品和項目中(保守估計)。其中小到有剛步入社會的新人,用 Fantastic-admin 寫了一個練習項目併成功找到工作;大到地方性的國企/事業單位也有 Fantastic-admin 的身影。
並且在這一年裏,Fantastic-admin 也從 Vue2 版本正式升級到了 Vue3 版本,採用了官方推薦的構建工具 Vite ,增加並優化了許多新特性,讓應用場景更加廣泛,開發體驗更加絲滑。搭配不斷完善的文檔,不管是用於學習參考,還是實際應用,相信一定會有所收穫。
接下來我會從幾個方面介紹框架的特性,還不快快收藏一波~
<img src="C:\Users\hoora\Desktop\TVd4qU.gif" style="zoom:50%;" />
開箱即用
什麼是「開箱即用」?就是即便不看文檔,你也能根據文件夾佈局、代碼註釋,快速上手開發業務功能。
做為框架的作者,我一直認為,只要我儘可能的不偷懶,使用者就可以儘可能的“偷懶”。所以為了降低使用者入門成本,在開發初期就對比了大量同類後台框架,小到文件夾佈局、命名都有考量,儘可能符合使用者的直覺,或者説是開發人員的習慣,用人話説就是:讓你在開發過程中,想找某個模塊下的文件,覺得它應該在什麼目錄下,那它就在你想的那個目錄下。
當然除了上手簡單,適合新手外,對高級開發者,在代碼裏也有詳盡的註釋,搭配文檔上的介紹,讓你對某個功能點可以快速理解框架的設計邏輯與實現方式。
使用有文檔,代碼有註釋,還缺什麼呢?對,就是視頻教程。考慮到有很大一部分後端開發者也在使用 Fantastic-admin ,我非常能理解學習一門新技術時最初期時的那種迷茫,因為可能連入門文檔都未必能馬上看懂,開發環境都得搗鼓好久,所以我也準備了幾期快速上手的視頻教程(目前視頻教程還只有 Vue2 版本的,Vue3 版本的視頻教程準備在明年開始製作)。
豐富的配置項
如何在保證簡單易上手的前提下,還能讓功能豐富且完善?那配置化必然貫穿整個框架。
框架配置
例如佈局、主題、標籤欄、麪包屑導航等幾乎所有的功能特性,你都可以在框架配置文件裏進行配置,並且框架做了最大程度的優化,讓配置項足夠簡單明瞭,例如大部分的配置都是 Boolean 類型的開關,如下圖(部分):
與之相對的,在項目運行的時候,你還可以在瀏覽器裏直接實時查看不同配置項的實際效果(部分):
環境配置
為方便不同生產環境下可能需要有不一樣的構建配置,框架也提供部分打包構建相關的配置,方便快速切換。
路由(導航)配置
大部分後台框架都是採用路由配置生成側邊導航欄的模式,本框架也不例外,但最大的差別就是 Fantastic-admin 的配置參數足夠豐富。例如,除了可以設置導航圖標外,還可以設置導航激活時的圖標;包括更智能的頁面緩存配置(下面會詳細介紹);以及可對每個路由頁面設置底部網站版權信息是否顯示等等。
進階功能
諸如頁面緩存、權限、國際化、錯誤日誌上報、自定義字體、PWA應用等等功能,只要你想使用,無需自行集成,框架全都有。
頁面緩存
三級(多級)路由緩存是後台框架最常見,且也是很難解決的痛點,而 Fantastic-admin 提供了一種全新的概念,叫路由扁平化,並在框架內提供了最佳實踐。
其實路由扁平化的概念就是把多級路由轉換成二級,但保留路由原始的層級結構(用於導航欄展示)。這個方案我在去年的這篇《一勞永逸,解決基於 keep-alive 的後台多級路由緩存問題》文章裏已經實踐並驗證成功。
路由扁平化處理後的效果
+-------------------------+ +-------------------------+
| Layout | | Layout.vue |
| +-------------------+ | | +-------------------+ |
| | Empty | | +----------> | | Page | |
| | +-------------+ | | | | | |
| | | Page | | | | | | |
| | +-------------+ | | | | | |
| +-------------------+ | | +-------------------+ |
+-------------------------+ +-------------------------+
現在在最新的 Vue3 版本中,頁面緩存得到了進一步的優化,通過簡單的路由配置就可以開啓頁面緩存,並且對比同類後台框架,會更加智能。例如可以根據某個頁面離開跳轉到不同的頁面進行區別處理,如 A 頁面跳轉到 B 頁面時,則 A 頁面進行緩存,A 頁面跳轉到 C 頁面時,則 A 頁面不緩存。
更多詳細介紹可點這裏。
權限
提供 4 種鑑權方式,覆蓋開發中每一處鑑權場景:
- 路由權限
- 鑑權組件
- 鑑權指令
- 鑑權函數
更多詳細介紹可點這裏。
國際化
與 element-plus 內置的國際化進行深度整合,可實現切換語種時,框架自身與 element-plus 提供的語言包同時切換。
更多詳細介紹可點這裏。
錯誤日誌上報
可全局攔截業務代碼的報錯,並提供上報方式,方便在生產環境定位線上問題。
更多詳細介紹可點這裏。
億點點細節
這些細節,單個拿出來或許不值一提,但也正是有了這些細節,才讓框架更出眾。
整站動效
前端通過簡單的動效,就可以大大提高交互的體驗,這也是為什麼我不管在項目還是產品中,都熱衷於增加點小而美的動效。
而在框架中,如果你細心,就會發現每一處可能都有動效的加持,諸如載入、切換、顯隱等等。同時為了不讓特效喧賓奪主,我遵循 Material Design 官方動效指南,嚴格控制所有動效的執行時長均在 150ms 到 300ms 之間。
以下展示部分動效,更多詳細介紹可以看我以前整理的一篇文章《我是如何設計後台框架裏那些錦上添花的動畫效果》。
全局搜索
全局搜索可以對側邊欄導航進行搜索,方便快速進入預期的模塊頁面。這個功能並不新鮮,而我在此基礎上增加了快捷鍵的支持,讓整個搜索的過程儘可能停留在鍵盤上,而不是需要反覆在鍵盤和鼠標之間來回切換。
標籤頁最大化
很多後台框架都有全屏功能,藉助這瀏覽器級別的 API ,進入全屏後會覆蓋整個顯示器,和手動按 F11 效果一樣。
但評良心説,瀏覽器上的操作,除了看視頻和專注寫作這兩個場景下,基本不會用到全屏。而後台框架的全屏功能的初衷是為了利用更多的區域,從而在頁面上顯示更多的內容,所以我做了一個比全屏更好用的最大化功能。
標籤頁合併
所有支持多標籤後台框架,基本都是通過監聽路由變化來動態創建/切換標籤頁,本框架也不例外。
但這就會出現頻繁操作導致標籤頁數量會劇增,於是我思考標籤頁是否可以像瀏覽器的標籤頁一樣,只在一個標籤頁裏切換,於是一個新特性就出來了,你可以對比下面兩張圖標籤欄上的差異。
標籤欄拖拽排序
這也是一點小創新,幾乎所有支持多標籤的後台框架都沒有拖拽排序的功能,順着只能是依次向後累加。而我考慮到實際使用場景中,可能需要在多個標籤頁來回切換操作,如果幾個標籤頁相隔甚遠,反而降低了操作效率。
表單展示模式快速切換
這個小特性也是我比較滿意的創新之一
在實際開發中,我經常會使用路由跳轉的方式去處理表單詳情頁,但是如果表單內容量較少,產品經理會希望把跳轉改成彈窗,或者抽屜的形式。這時候改一個頁面還好,如果有大量模塊需要調整,我整個人都會崩潰了。
所以我實現了一個可以快速切換的標準 CURD 模塊的模版頁面,可以通過簡單的配置快速切換詳情表單的展示方式。
對這部分內容感興趣的可以點這裏瞭解更多。
絲滑的開發體驗
在開發中你有沒有遇到過,使用某個組件,發現還沒引入;調用某個 API ,發現還沒 import ;每開發一個類似的新模塊,手動一個個去創建文件。如果有,並且覺得很麻煩,那就藉着往下看吧,Fantastic-admin 都幫你考慮到。
加強版 <script setup>
在 <script setup> 裏無需導入相關 API ,該依賴會自動導入(默認支持 vue 、vuex 和 vue-router):
<script setup>
// 原先需要手動 import 相關 API
import { ref, computed } from 'vue'
import { useStore } from 'vuex'
import { useRoute, useRouter } from 'vue-router'
const count = ref(0)
const doubled = computed(() => count.value * 2)
const store = useStore()
store.dispatch('shopCar/getList')
const route = useRoute()
const router = useRouter()
console.log(route.path)
router.push('/dashboard')
</script>
<script setup>
// 現在直接使用即可
const count = ref(0)
const doubled = computed(() => count.value * 2)
const store = useStore()
store.dispatch('shopCar/getList')
const route = useRoute()
const router = useRouter()
console.log(route.path)
router.push('/dashboard')
</script>
除此之外,你還可以在 <script setup> 上直接設置組件名,如 <script setup name="ComponentName"> ,再也不需要用下面這種方式了:
<script>
export default {
name: 'ComponentName'
}
</script>
<script setup>
// 業務代碼
</script>
更多詳細介紹可點這裏。
全局組件自動按需加載
全局組件顧名思義就是在使用的時候,無需導入,無需註冊,本身就是一種很舒服的開發體驗。但在 Vue2 版本里,全局組件會在框架運行時就自動導入並註冊,導致首屏加載的文件會隨着全局組件的增多而越來越大。
而在 Vue3 版本里,對這一問題進行的優化,保留了使用時無需導入,無需註冊的開發體驗,從底層實現了按需自動導入並註冊。
更多詳細介紹可點這裏。
超過 10 萬個 SVG 圖標免費使用
你可以在框架中輕鬆使用 Iconify 裏 100 多套圖標合集,超過 10 萬個的 SVG 圖標,並且無需擔心項目構建體積,因為框架已經做好處理,構建過程也是按需構建,也就是説你使用到了哪些圖標,才會被打包進項目內。
更多詳細介紹可點這裏。
通過命令行快速生成文件
開發過程中,避免不了手動去頻繁創建頁面、組件等文件,並且還要在文件裏寫一些必要的代碼,如果你也覺得這件事很麻煩,而且一點也不酷,那麼現在有更輕鬆的方式來處理這一切
就是通過命令行的形式自動生成文件,框架提供了 5 種模式,分別對應創建不同類型的文件。
page頁面文件component組件文件storeVuex 全局狀態文件mockmock 文件module頁面模塊文件
這裏就演示一下創建一個頁面文件的整個流程是怎麼樣的,更多詳細介紹可點這裏。
從 vue-element-admin 遷移
vue-element-admin 做為國內使用人羣最多,Github stars 數最高的一款後台框架,它的成功和作者的貢獻是不可否認的。
但缺點也很明顯,就是功能不夠豐富,同時沒有 Vue3 版本,並且作者在2020年6月份發佈4.4.0版本後再無更新。
如果你現在正是 vue-element-admin 的使用者,看完這篇文章後對 Fantastic-admin 感興趣,我也提供了一篇《遷移攻略》,方便你可以快速將現有項目從 vue-element-admin 遷移到 Fantastic-admin 上。
結束語
做為 Fantastic-admin 的作者,我認為單靠興趣、用愛發電,是無法支持我長期堅持維護下去,所以你也應該發現了,Fantastic-admin 是一款免費與收費並存的產品。
其中基礎版保留了後台框架最常用的功能,並遵循 MIT 開源協議,可免費使用;而專業版則需要付費購買,並且專業版提供了更多高級的特性,能應對各種場景下的使用。
最後的最後,如果覺得 Fantastic-admin 這個框架不錯,或者已經在使用了,希望你可以去 Github 或者 Gitee(碼雲) 幫我點個 ⭐ ,這將對我是極大的鼓勵。