Vue使用vue-router,Element

本文介绍了如何在Vue应用中集成vue-router实现动态路由展示,并通过Element UI构建响应式菜单。通过实例展示了如何配置路由和菜单,以及如何通过修改组件属性实现菜单项的动态显示。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

一、 Vue使用vue-router,Element

  1. 安装vue-router

     npm install vue-router@next --save
    
  2. 修改main.js

    import {createApp} from 'vue'
    import App from './App.vue'
    import router from './router'const app = createApp(App)
    app.use(router)
    app.mount('#app')
    
  3. src目录下新建文件夹router,新建
    router/index.js
    如下:

    import {createRouter, createWebHashHistory} from "vue-router"import Houtai from "../components/Houtai";const routes = [
        {
            path: '/',
            component: Houtai
        },
    ]
    export const router = createRouter({
        history: createWebHashHistory(),
        routes: routes
    })export default router
    
  4. 修改App.vue

    <template>
    <router-view></router-view>
    </template><script>
    export default {
    name: 'App',
    }
    </script>
    
  1. 引入ElementUI​
   npm install element-plus --save
  1. main.js最终

    import {createApp} from 'vue'
    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(ElementPlus)
    app.use(router).mount('#app');
    
    ``
    
    
    
  2. router/index.js

    const routes = [
        {
            path: '/',
            name: '后台',
            component: Houtai,
            show: true,
            children: [
                {
                    path: '/test1',
                    name: '测试一',
                    show: true,
                    component: Test1
                },
                {
                    path: '/test2',
                    name: '测试二',
                    show: true,
                    component: Test2
                }
            ]
        }
    
    ]
    
  3. Houtai.vue
    部分代码直接来自: element官方网站

    <template>
    <el-container style="height: 500px; border: 1px solid #eee">
        <el-aside width="200px" style="background-color: rgb(238, 241, 246)">

        <el-menu router :default-openeds="['0', '1']">
            <div v-for="(item,index) in $router.options.routes" :key="index">
            <el-sub-menu :index="index+''" v-if="item.show">
                <template #title><i class="el-icon-message"></i>{{ item.name }}</template>
                <div v-for="item2 in item.children" :key="item2">
                <el-menu-item :index="item2.path" :class="$route.path==item2.path?'is-active':' '" v-if="item2.show">
                    {{ item2.name }}
                </el-menu-item>
                </div>
            </el-sub-menu>
            </div>
        </el-menu>
        </el-aside>

        <el-container>
        <el-header style="text-align: right; font-size: 12px">
            <el-dropdown>
            <i class="el-icon-setting" style="margin-right: 15px"></i>
            <template #dropdown>
                <el-dropdown-menu>
                <el-dropdown-item>查看</el-dropdown-item>
                <el-dropdown-item>新增</el-dropdown-item>
                <el-dropdown-item>删除</el-dropdown-item>
                </el-dropdown-menu>
            </template>
            </el-dropdown>
            <span>王小虎</span>
        </el-header>

        <el-main>
            <router-view></router-view>
        </el-main>
        </el-container>
    </el-container>
    </template>

运行后打开浏览器

在这里插入图片描述

只要改变show的属性,就可以实现动态展示

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值