美文网首页
8. Vue router-view页面布局

8. Vue router-view页面布局

作者: zouhao1985 | 来源:发表于2022-04-30 17:24 被阅读0次

    1.概述

    常见的管理系统都有一个树形的菜单,在日常开发中,这个一般是以模板的形式存在,开发人员只要开发对应的业务页面就可以了,无须考虑通用的菜单模板。今天对vue-router实现的模板功能进行说明。
    首先管理系统都有一个登陆界面,这个登陆界面是没有菜单的;登陆到系统首页的时候才会有菜单。本章节的内容就说明这两个页面的实现。

    2.vue-router实现

    实现过程中,我们可以认为登录页是不需要模板的;而系统首页是需要一个模板(不用模板的话,开发其他业务功能界面就需要复制菜单的代码),这里我们使用到了vue-router配置属性children。

    关键代码如下:

    # src/router/login.js
    const routes = [
      {
        path: "/login",
        component: () => import("../view/login/Login"),
      },
      {
        path: "/menu",
        component: () => import("@/view/Menu"),
      },
      {
        path: "/dashboard",
        component: () => import("@/view/Layout"),  // 模板页面
        children: [
          {
            path: 'dashboard1',
            name: 'dashboard1',
            component: () => import("@/view/Dashboard")
          }
        ]
      },
    ];
    export default routes;
    

    模板页面,这里使用了elementUI

    # src/view/Layout.vue
    <template>
      <div>
        <el-container>
          <el-header>
            <el-menu
              class="el-menu-demo"
              mode="horizontal"
              background-color="#545c64"
              text-color="#fff"
              active-text-color="#ffd04b"
              @select="test"
            >
              <el-menu-item index="1"
                ><router-link to="/dashboard/dashboard2"
                  >处理中心</router-link
                ></el-menu-item
              >
              <el-submenu index="2">
                <template slot="title">我的工作台</template>
                <el-menu-item index="2-1">选项1</el-menu-item>
                <el-menu-item index="2-2">选项2</el-menu-item>
                <el-menu-item index="2-3">选项3</el-menu-item>
                <el-submenu index="2-4">
                  <template slot="title">选项4</template>
                  <el-menu-item index="2-4-1">选项1</el-menu-item>
                  <el-menu-item index="2-4-2">选项2</el-menu-item>
                  <el-menu-item index="2-4-3">选项3</el-menu-item>
                </el-submenu>
              </el-submenu>
              <el-menu-item index="3"><router-link to="/menu"
                  >消息中心</router-link
                ></el-menu-item>
              <el-menu-item index="4"
                ><a href="https://www.ele.me" target="_blank"
                  >订单管理</a
                ></el-menu-item
              >
            </el-menu>
          </el-header>
          <el-main>
            <router-view></router-view>
          </el-main>
          <el-footer>Footer</el-footer>
        </el-container>
      </div>
    </template>
    
    <script>
    export default {
      name: "Layout",
      data() {
        return {
          //   activeIndex: "1",
          activeIndex2: "1",
        };
      },
      methods: {
        test() {
          console.log('test')
        },
        handleSelect(key, keyPath) {
          console.log(key, keyPath)
        }
      }
    }
    </script>
    
    

    3.总结

    从路由的配置中可以看到,login页面是没有children属性,所以它直接展示对应的login页面。但是dashboard页面有使用了一个模板,在dashboard中的内容展示在Layout页面的router-view标签中。
    如果开发其他的业务功能页面(需要登陆),就可以把页面放在dashboard的children元素中,这样就可以复用菜单的功能了。
    如果系统中有不同的模块,其菜单布局不一样,那么可以在router配置中先定义不同的模块,配置不同的模板,对应的页面放在不同的模块中。

    4.源代码下载

    https://gitee.com/animal-fox_admin/learn-vue-web
    branch:lesson5

    相关文章

      网友评论

          本文标题:8. Vue router-view页面布局

          本文链接:https://www.haomeiwen.com/subject/jyiejrtx.html