要想快速搭建管理后台系统,使用vue-element-admin是一个非常好的方案,它使用了最新的前端技术栈,内置了 i18 国际化解决方案,动态路由,权限验证,提炼了典型的业务模型,提供了丰富的功能组件,它可以帮助你快速搭建企业级中后台产品原型。
同时为了方便进行二次开发,官方还提供了基础模版vue-element-template,并且贴心的提供了一系列的教程文章,感兴趣的可移步至官方教程。(大佬们真厉害,在此膜拜下)
本系列文章主要是抱着学习的态度,使用Vue3对基础模版vue-element-template进行从0到1的"升级"(主要还是模仿,手动狗头)
主要依赖版本改动如下:
| vue-element-template | vue3-element-template | 备注 |
|---|---|---|
| webpack | vite | |
| vue2 | vue3 | |
| vuex | Pinia | 状态管理 |
| elementUI | Element Plus | UI框架 |
初始化vue3项目
可以直接查看03 接口测试平台 前端项目创建里面的步骤,非常easy,有手就会
创建完成后,浏览器打开网址http://localhost:5173,就可以看到初始化项目了,给自己鼓个掌吧
完成登录页面布局
与04 接口测试平台 前端登录页面编写的步骤基本一致,但是它是使用Ant Design Vue框架,感兴趣的可以直接查看,本章将采用Element Plus进行重写。
- 首先在项目目录中,通过命令
npm install element-plus --save安装element plus依赖 - 在
main.js中进行完整引用,如果只想要按需引入,可查看官方指南。
import { createApp } from "vue";
import { createPinia } from "pinia";
import App from "./App.vue";
import router from "./router";
import ElementPlus from "element-plus";
import "element-plus/dist/index.css";
const app = createApp(App);
app.use(createPinia());
app.use(router);
app.use(ElementPlus);
app.mount("#app");
- 在Element Plus官网找到表单组件,然后拷贝到
LoginView.vue中进行调整
<template>
<div class="login-container">
<el-form :model="loginForm" label-width="120px">
<el-form-item label="用户名">
<el-input v-model="loginForm.username" />
</el-form-item>
<el-form-item label="密码">
<el-input type="password" v-model="loginForm.password" />
</el-form-item>
<el-button
type="primary"
>登录
</el-button>
</el-form>
</div>
</template>
- 在
router.js中设置登录页面的路由
import { createRouter, createWebHistory } from "vue-router";
import HomeView from "../views/HomeView.vue";
const router = createRouter({
history: createWebHistory(import.meta.env.BASE_URL),
routes: [
{
path: "/",
name: "home",
component: HomeView,
},
{
path: "/about",
name: "about",
component: () => import("../views/AboutView.vue"),
},
{
path: "/login",
name: "login",
component: () => import("../views/LoginView.vue"),
},
],
});
export default router;
通过命令npm run dev启动项目,可以看到已经正常展示输入框和按钮了,但是样式很难看,接下来就来调整登录也样式。
- 样式这里使用sass,也需要使用命令
npm install sass sass-node --save-dev先安装依赖。
具体样式调整如下,可供参考
其中图标是使用iconfont的图标,具体用法可查看07 接口测试平台 前端页面布局中引入iconfont图标部分的介绍。
登录页定制化部分抽取
既然是要做成跟vue-admin-template一样通用的模版,那么很多地方都需要提供定制化的能力,比如登录页上,管理后台名称,登录按钮颜色等。
配置文件
- 首先是「管理后台名称」,因为其他的页面可能也需要使用到,所以新建一个配置文件来进行管理项目配置项。在src目录下新建
setting.js文件,定义配置项变量。
export default {
title: "XXX管理后台",
};
- 然后在
LoginView.vue中进行使用
<template>
<div class="login-container">
<el-form :model="loginForm" class="login-form" label-position="left">
<div class="title-container">
<h3 class="title">{{ title }}</h3>
</div>
...
</el-form>
</div>
</template>
<script setup>
import defaultSettings from "../settings";
...
const title = defaultSettings.title || "Vue3 Element Template";
...
</script>
主题色定制
因为是使用Element PlusUI框架,可以直接使用它提供的更换主题色方案。
- 在
src/assets/styles/element/目录下,新增index.scss文件用来重写样式。
/* 只需要重写你需要的即可 */
@forward 'element-plus/theme-chalk/src/common/var.scss' with (
$colors: (
'primary': (
'base': #5470C6,
),
),
);
// 导入Element Plus原有样式:
@use "element-plus/theme-chalk/src/index.scss" as *;
- 将
main.js中引入的样式文件进行修改,如下:
再次启动项目,可以看到按钮颜色及管理后台名称都修改成功了,撒花🎉🎉🎉