如何从 vue-element-admin 迁移到 Fantastic-admin
// FIXME 链接更新
如果你还不知道 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 提供了一个一劳永逸的解决办法,详细可阅读《页面缓存》。
最后
本篇迁移文档仅对整体做简单说明,迁移项目毕竟是个庞大工程,过程中难免会出现各种无法预测的问题,建议可以加讨论群自由讨论寻求帮助。
如何从 vue-element-admin 迁移到 Fantastic-admin的更多相关文章
- 新书上线:《Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统》,欢迎大家买回去垫椅子垫桌脚
新书上线 大家好,笔者的新书<Spring Boot+Spring Cloud+Vue+Element项目实战:手把手教你开发权限管理系统>已上线,此书内容充实.材质优良,乃家中必备垫桌脚 ...
- 循序渐进VUE+Element 前端应用开发(9)--- 界面语言国际化的处理
我们开发的系统,一般可以不用考虑语言国际化的问题,大多数系统一般是给本国人使用的,而且直接使用中文开发界面会更加迅速 一些,不过框架最好能够支持国际化的处理,以便在需要的时候,可以花点时间来实现多语言 ...
- 循序渐进VUE+Element 前端应用开发(17)--- 菜单资源管理
在权限管理系统中,菜单也属于权限控制的一个资源,应该直接应用于角色,和权限功能点一样,属于角色控制的一环.不同角色用户,登录系统后,出现的系统菜单是不同的.在VUE+Element 前端中,我们菜单结 ...
- 基于vue(element ui) + ssm + shiro 的权限框架
zhcc 基于vue(element ui) + ssm + shiro 的权限框架 引言 心声 现在的Java世界,各种资源很丰富,不得不说,从分布式,服务化,orm,再到前端控制,权限等等玲琅满目 ...
- Vue学习笔记-基于CDN引入方式简单前后端分离项目学习(Vue+Element+Axios)
一 使用环境 开发系统: windows 后端IDE: PyCharm 前端IDE: VSCode 数据库: msyql,navicat 编程语言: python3.7 (Windows x86- ...
- Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成)
Vue+Element的动态表单,动态表格(后端发送配置,前端动态生成) 动态表单生成 ElementUI官网引导 Element表单生成 Element动态增减表单,在线代码 关键配置 templa ...
- 自搭的一个系统框架,使用Spring boot+Vue+Element
基于:jdk1.8.spring boot2.1.3.vue-cli3.4.1 特性: ~ 数据库访问使用spring data jpa+alibaba druid ~ 前后端数据交互使用 ...
- 分享一个自搭的框架,使用Spring boot+Vue+Element UI
废弃,新的:https://www.cnblogs.com/hackyo/p/10453243.html 特点:前后端分离,可遵循restful 框架:后端使用Spring boot,整合了aop.a ...
- 转:vue+element实现树形组件
项目中需要用到树形组件,在网上发现一个用vue+element实现的树形组件,现在记录下: demo地址:https://github.com/wilsonIs/vue-treeSelect
- 前端小菜鸡使用Vue+Element笔记(一)
关于使用Vue+Element的项目简介~ 最近因为项目组缺前端人员,所以自己现学现做页面,先把前后台功能调通 觉得前端可真的是不容易呀哎呀~ 首先记录一下相关的Vue入门的教程: vue环境搭建示例 ...
随机推荐
- 架构之:REST和HATEOAS
目录 简介 HATEOAS简介 HATEOAS的格式 HATEOAS的Spring支持 总结 简介 我们知道REST是一种架构方式,它只是指定了六种需要遵循的基本原则,但是它指定的原则都比较宽泛,我们 ...
- 流暢的pyhton4---數據庫備份
一.linux數據庫備份腳本 1.数据库备份,命令如下: ./pg_dump -h localhost -p 5432 -U postgres -W -F c -b -v -f "/opt/ ...
- 第十二篇 -- 如何向MFC对话框添加菜单
1.如何在基于对话框的MFC中添加菜单:https://blog.csdn.net/u012273127/article/details/71293088 步骤: 资源文件处右击Add Resourc ...
- Vue--el-menu 的自动跳转功能与自己的click事件冲突
一\先看elementUI说明 项目实际 此时点击活导航时以 index 作为 path 进行路由跳转 那么此时不要onclik事件了 如果此时有在有click 就
- 【LeetCode】204.计数质数
问题描述: 统计所有小于非负整数 n 的质数的数量. 示例: 输入: 10 输出: 4 解释: 小于 10 的质数一共有 4 个, 它们是 2, 3, 5, 7 . 这是一道简单题,但是却并没有那么直 ...
- 当鼠标移入div上时,div的背景色在4s之内渐变为灰色,同时在5s之内顺时针旋转45度,且尺寸缩小一半;当鼠标移走时,再渐变恢复初始样式
<style> #d1{ width:200px; height:200px; border:1px solid #000; transition:background 4s linear ...
- SprintBoot简单入门
1.什么是SpringBoot SpringBoot是基于Spring的基础上提供了一套全新的框架,其目的是为了在开发时简化Spring的相关配置及开发过程.在SpringBoot未出来之前,准备搭建 ...
- Sth about Educational DP Contest
Contest Website : atcoder.jp/contests/dp \[\begin{array}{c|C|c|c} TaskNum & TaskName & Statu ...
- Cobaltstrike与MSF会话派生
Cobaltstrike与MSF会话派生 前言 一般在渗透的过程中,Get到shell之后一般来说我喜欢上线到Cobaltstrike,但是Cobaltstrike的会话是60S更新一次,有时候功能也 ...
- 做了两年多的安卓,突然想转Java后端,感觉Android职业前景不太好,转还是不转?
近几年相信很多Android开发者都有过这种想法,最终还是有些Android 开发选择了转行,但是还有些开发者选择了坚持. 因为现在Android开发确实竞争很大,很多公司抛出几个岗位,每天能收到成百 ...





