vue3容器布局和导航路由实现示例

 更新时间:2022年06月08日 11:38:27   作者:爱吃红薯粉  
这篇文章主要为大家介绍了vue3容器布局和导航路由实现示例,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪

容器布局

将App.vue中的HelloWorld相关内容注释或删除掉,然后将element-plus提供的布局复制过来放在App.vue中

该布局为左侧菜单栏,右边内容区,右上为顶部,典型的管理后台风格

<template>
  <!-- <img alt="Vue logo" src="./assets/logo.png"> -->
  <div class="common-layout">
    <el-container>
      <el-aside width="200px">
        <Menu></Menu>
      </el-aside>
      <el-container>
        <el-header height="20px">Header</el-header>
        <el-main>
          <router-view></router-view>
        </el-main>
      </el-container>
    </el-container>
  </div>
<!-- 
  <div>
      <p>
        <router-link to="/home">Go to Home</router-link>
        

        <router-link to="/about">Go to about</router-link>
        <router-view></router-view>
      </p>
    </div>
  <HelloWorld msg="Welcome to Your Vue.js App"/> -->
</template>
<script>
// import HelloWorld from './components/HelloWorld.vue'
import Menu from './components/Menu.vue'
export default {
  name: 'App',
  components: {
    // HelloWorld
    Menu
  }
}
</script>

上述代码中有Menu.vue组件,需要新建,稍后再添加内容

路由定义

在src目录新建routes.js文件,将路由列表写入,方便其它组件使用

const routes = [
    { path: "/home", name: 'home', label: '首页', component: () => import('./components/home.vue'), },
    { path: "/about", name: 'about', label: '关于', component: () => import('./components/about.vue'), },
]
export default routes

内容没有什么变化,就是将router.js 中的routes抽出来,单独写一个文件

router.js引入并使用routes

import { createRouter, createWebHashHistory } from 'vue-router'
import routes from './routes'
const router = createRouter({
    history: createWebHashHistory(),
    routes: routes,
})
export default router

左侧菜单

在components目录中新建Menu.vue页面,然后将element-plus中菜单组件中Side bar 复制过来。

<template>
  <el-row class="tac">
    <el-col :span="24">
      <h5 class="mb-2">Default colors</h5>
      <el-menu default-active="2" class="el-menu-vertical-demo" @open="handleOpen" @close="handleClose">
        <el-sub-menu index="1">
          <template #title>
            <el-icon>
              <location />
            </el-icon>
            <span>Navigator One</span>
          </template>
          <router-link v-for="(item, index) in routes" :to="{ name: item.name }" :key="item.name">
            <el-menu-item :index="index">
              <span v-text="item.label"></span>
            </el-menu-item>
          </router-link>
        </el-sub-menu>
        <el-menu-item index="2">
          <el-icon>
            <icon-menu />
          </el-icon>
          <span>Navigator Two</span>
        </el-menu-item>
        <el-menu-item index="3" disabled>
          <el-icon>
            <document />
          </el-icon>
          <span>Navigator Three</span>
        </el-menu-item>
        <el-menu-item index="4">
          <el-icon>
            <setting />
          </el-icon>
          <span>Navigator Four</span>
        </el-menu-item>
      </el-menu>
    </el-col>
  </el-row>
</template>
<script>
import {
  Document,
  Menu as IconMenu,
  Location,
  Setting,
} from '@element-plus/icons-vue'
import routes from '../routes'
export default {
  name: 'Menu',
  components: { Document, IconMenu,Location, Setting },
  data() {
    return {
      routes: routes,
    }
  },
  methods: {
    handleOpen() {
      console.log("111")
    },
    handleClose() {
      console.log("222")
    },
  }
}
</script>

@element-plus/icons-vue 此包需要安装(npm install @element-plus/icons-vue)

element-plus官网中的例子都是ts+setup语法写的,这里我们改成js+响应式语法

列宽改成:span="24"或更大值,列宽太小会发现灰线在字体中间

引入定义的路由列表routes.js,将内容循环到 router-link中

运行效果如下

结语:

后续加路由直接加到routes.js既可,简单的左侧菜单,右侧内容区就实现了,以上就是vue3容器布局和导航路由实现示例的详细内容,更多关于vue3容器布局导航路由的资料请关注脚本之家其它相关文章!

相关文章

  • 基于element-ui表格的二次封装实现

    基于element-ui表格的二次封装实现

    本文主要介绍了基于element-ui表格的二次封装实现,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2022-07-07
  • electron踩坑之dialog中的callback解决

    electron踩坑之dialog中的callback解决

    这篇文章主要介绍了electron踩坑之dialog中的callback解决,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-10-10
  • vue中$refs的用法及作用详解

    vue中$refs的用法及作用详解

    这篇文章主要介绍了vue中$refs的用法及作用详解,非常不错,具有参考借鉴价值,需要的朋友可以参考下
    2018-04-04
  • Vue3使用vue-office插件实现word预览功能

    Vue3使用vue-office插件实现word预览功能

    vue-office是一个支持多种文件(docx、.xlsx、pdf)预览的vue组件库,支持vue2和vue3,这篇文章主要介绍了Vue3使用vue-office插件实现word预览功能,需要的朋友可以参考下
    2024-04-04
  • Vue3中如何使用Three.js详解(包括各种样例、常见场景、问题及解决方案)

    Vue3中如何使用Three.js详解(包括各种样例、常见场景、问题及解决方案)

    Three.js是一个常见的需求,Three.js是一个用于在浏览器中创建和显示动画3D计算机图形的JavaScript库,这篇文章主要介绍了Vue3中如何使用Three.js的相关资料,包括各种样例、常见场景、问题及解决方案,需要的朋友可以参考下
    2025-04-04
  • 解决在vue的mounted中获取对象为null问题

    解决在vue的mounted中获取对象为null问题

    这篇文章主要介绍了解决在vue的mounted中获取对象为null问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2024-03-03
  • Vue3 响应式高阶用法之triggerRef()的使用

    Vue3 响应式高阶用法之triggerRef()的使用

    在Vue3响应式系统中,shallowRef仅追踪顶层属性的变化,当需要对内层属性作出反应时,可使用triggerRef()方法手动触发更新,本文介绍了triggerRef()的应用场景、基本用法、功能和最佳实践,感兴趣的可以了解一下
    2024-09-09
  • nuxt踩坑之Vuex状态树的模块方式使用详解

    nuxt踩坑之Vuex状态树的模块方式使用详解

    这篇文章主要介绍了nuxt踩坑之Vuex状态树的模块方式使用详解,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-09-09
  • 深入理解vue中的$set

    深入理解vue中的$set

    这篇文章主要介绍了深入理解vue中的$set,小编觉得挺不错的,现在分享给大家,也给大家做个参考。一起跟随小编过来看看吧
    2017-06-06
  • vue element el-transfer增加拖拽功能

    vue element el-transfer增加拖拽功能

    这篇文章主要介绍了vue element el-transfer增加拖拽功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2021-01-01

最新评论