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

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

请添加图片描述

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>

在这里插入图片描述

2、User.vue 用户管理组件

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

<template>
<h1>
    这是用户管理组件
</h1>
</template>

<script>
   export default{
    name:"User"
   }

</script>

3、登陆组件

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

<template>
<h1>
    这是登陆组件
</h1>
</template>

<script>
   export default{
    name:"Login"
   }

</script>

在这里插入图片描述

Logo

前往低代码交流专区

更多推荐