Vue+EelementUI实现快速搭建后台管理系统框架,并且实现页面件的路由跳转

简介: Vue+EelementUI实现快速搭建后台管理系统框架,并且实现页面件的路由跳转

EelementUI 搭建项目框架+页面路由跳转


一、整体布局示意图、总体布局 Main.vue组件、index.js总路由

image.png


1、Main.vue 组件,所有框架组件的父组件

<template>
    <div id="main">
        <!-- 头部 -->
               <!-- 高为80px  -->
        <el-header style="padding:0px; height: 80px;">
            <!-- 直接写死头部组件(因为:这块区域只显示头部组件) -->
            <Header></Header>
        </el-header>
        <!-- 侧边、内容区 -->
           <!-- 宽为100%,高为,100%减去头部的高, calc:计算函数,减号两边必须要有一个空格-->
        <el-container style="width:100%;height:calc(100% - 80px);">
            <!-- 侧边栏 -->
                 <!-- 宽为12%,高为100% -->
            <el-aside style="width: 12%; height: 100%;">
                  <!-- 直接写死侧边栏组件(因为:这块区域只显侧边栏组件) -->
                <Aside></Aside>
            </el-aside>
            <!-- 内容显示区:(首页、用户管理) -->
                    <!-- 宽为88%,高为100% -->
            <el-main style="padding:0px; width: 88%; height: 100%;">
                <!-- 这里不能单独写,首页组件或用户管理组件 ,因为需要来回切换,不能写死-->
                <router-view></router-view>
            </el-main>
        </el-container>
    </div>
</template>
<script>
    //导入首页组件
import Header from "../components/Header.vue";
//导入侧边栏组件
import Aside from "@/components/Aside.vue";
//导出组件,可以使其他组件导入本组件
export default {
    name: 'main',
    //导入相应组件后注册组件
    components: {
        Header,
        Aside,
    }
}
</script>
<style>
#main {
    margin: 0px;
    padding: 0px;
    height: 100%;
    width: 100%;
}
.el-header {
    width: 100%;
    height: 200px;
    padding: 0px;
}
</style>


2、index.js 总路由配置文件,所有能路径的组件,都要在这里配置。

import Vue from 'vue'
import VueRouter from 'vue-router'
Vue.use(VueRouter)
//路由设置
const routes = [
  {
    //路由访问路径:根路径,
    path: '/',
    //路由名字
    name: 'Main',
    //导入并注册路由,路径为组件的位置
    component: () => import('../views/Main.vue'),
    //页面重定向,我们在访问根路径时,会跳转到 "/home” 路径访问对应的页面,这里就是在内容显示区加载首页的页面
    redirect:"/home",
    //子组件:这里是,Main组件下包含有 Home、User 子组件
    children:[
      //首页的路由信息
      {
        path: 'home',
        name: 'Home',
        component: () => import('../pages/home/Home.vue'),
      },
      //用户管理路由的信息
      {
        path: 'user',
        name: 'User',
        component: () => import('../pages/user/User.vue'),
      },
    ]
  },
//和Main组件同级的登陆组件,是全屏展示的
{
  path:"/login",
  name:"Login",
  component:()=>import('../views/login/login.vue')
}
]
const router = new VueRouter({
  routes
})
export default router


二、框架组件(头部、侧边栏)

1、Header.vue 头部组件

<template>
    <!-- logo和文字 -->
    <div class="header">
        <a href="#">
            <span class="company">商品管理系统</span>
        </a>
        <!--  下拉菜单-->
        <div>
            <el-dropdown @command="handleCommand">
                <!--  绑定指令,在methods里定义-->
                <span class="el-dropdown-link">
                    <!-- 您好 -->
                    <div class="demo-type">
                        <div>
                            <el-avatar src="https://cube.elemecdn.com/0/88/03b0d39583f48206768a7534e55bcpng.png">
                            </el-avatar>
                        </div>
                    </div>
                </span>
                <el-dropdown-menu slot="dropdown">
                    <!-- icon是修改图标 ,command是点击后传给方法的值-->
                    <el-dropdown-item icon="el-icon-edit" command="个人信息">个人信息</el-dropdown-item>
                         <!-- 在调用方法时一定要按照格式:@click.native=“” 书写-->
                    <!--  quitLogin() 方法,退出登陆-->
                    <el-dropdown-item icon="el-icon-s-operation"  command="欢迎下来光临!" @click.native="quitLogin()">退出登录</el-dropdown-item>
                </el-dropdown-menu>
            </el-dropdown>
        </div>
        <!--  下拉菜单结束-->
    </div>
</template>
<script>
export default {
    name: 'Header',
    methods: {
        handleCommand(command) {
            this.$message(`${command}`)
        },
        quitLogin(){
            //通过在 index.js 中为登陆组件写的路由名字,进行路由的跳转
           this.$router.push('Login');
        }
    },
}
</script>


2、Aside.vue 侧边栏组件

<template>
  <div id="aside">
    <el-row class="tac">
      <el-col :span="24" style="border-right: solid 1px #FFFFFF;">
        <!-- min-height:calc(100vh - 80px); 是通过设置最小高度,100vh代表试图的总高(100%),减去头部视图的高 -->
        <!-- default-active :默认高亮的按钮 -->
        <!-- router 路由 -->
        <el-menu style="min-height: calc(100vh - 80px);" default-active="home" class="el-menu-vertical-demo" router
          @open="handleOpen" @close="handleClose">
 <!-- index='home' : 表示跳转的组件路由,这里跳转的是主页的组件路由,名字是在 index.js 里面设置的 -->
          <el-menu-item index="home">
            <i class="el-icon-s-home"></i>
            <span slot="title">首页</span>
          </el-menu-item>
          <!-- index='home' : 表示跳转的组件路由,这里跳转的是用户的组件路由 -->
          <el-menu-item index="user">
            <i class="el-icon-s-custom"></i>
            <span slot="title">用户管理</span>
          </el-menu-item>
        </el-menu>
      </el-col>
    </el-row>
  </div>
</template>
<script>
export default {
  name: 'Aside',
  methods: {
    handleOpen(key, keyPath) {
      console.log(key, keyPath);
    },
    handleClose(key, keyPath) {
      console.log(key, keyPath);
    }
  }
}
</script>
<style>
#aside {
  height: 100%;
  border-right: solid 1px rgb(173, 173, 173);
}
</style>


三、展示区域组件和登陆组件

1、Home.vue 首页组件

点击侧边栏的首页跳转这里


<template>
<h1>
    这是首页组件
</h1>
</template>
<script>
   export default{
    name:"Home"
   }
</script>

image.png


2、User.vue 用户管理组件

点击侧边栏的用户管理跳转到这里


<template>
<h1>
    这是用户管理组件
</h1>
</template>
<script>
   export default{
    name:"User"
   }
</script>


3、登陆组件

点击头部的退出登陆按钮,跳转到这里。


<template>
<h1>
    这是登陆组件
</h1>
</template>
<script>
   export default{
    name:"Login"
   }
</script>

image.png




相关文章
|
22天前
|
JavaScript API
vue 批量自动引入并注册组件或路由
vue 批量自动引入并注册组件或路由
|
13天前
|
JavaScript 前端开发 搜索推荐
推荐5款免费、开箱即用的Vue后台管理系统模板
推荐5款免费、开箱即用的Vue后台管理系统模板
|
21天前
|
JavaScript 前端开发 UED
揭秘Vue.js高效开发:Vue Router如何让单页面应用路由管理变得如此简单?
【8月更文挑战第30天】随着Web应用复杂性的增加,单页面应用(SPA)因出色的用户体验和高效的页面加载性能而备受青睐。Vue.js凭借简洁的语法和灵活的组件系统成为构建SPA的热门选择,其官方路由管理器Vue Router则简化了路由管理。本文通过实战示例介绍如何利用Vue Router实现高效的SPA路由管理,包括命名路由、动态路由及其核心优势。
11 0
|
21天前
|
JavaScript API 网络架构
vue 动态路由使用
【8月更文挑战第30天】vue 动态路由使用
31 0
|
2天前
|
JavaScript 前端开发
vue动态添加style样式
vue动态添加style样式
|
2天前
|
JavaScript 前端开发
Vue项目使用px2rem
Vue项目使用px2rem
|
1天前
|
JavaScript API
vue学习(13)监视属性
vue学习(13)监视属性
8 2
|
1天前
|
JavaScript
vue 函数化组件
vue 函数化组件
|
1天前
|
JavaScript
vue知识点
vue知识点
6 2
|
2天前
|
JavaScript
vue中watch的用法
vue中watch的用法