如何实现Vue路由的二级菜单

目录

Vue路由(一、二级路由)

一级路由配置

二级路由配置

Vue中展示二级路由的默认模块/二级路由默认显示

Vue路由,二级路由及跳转

如何用vue实现二级菜单栏

◼️ 相关参考资料


当朋友们看到这个文章时想必是想要了解vue路由二级菜单相关的知识,这里同时多从个角度为大家介绍vue二级路由的配置相应的内容。

Vue路由(一、二级路由)

是前台为了实现单页面应用然后设置路径,根据不同的路径显示不同页面。但是这些路径在服务器上不是真是存在的。

hash路由:默认的是hash路由,过onhashchange()来检测路由的变化,根据不同的hash来显示不同元素。获取当前的hash值location.hash

history路由:通过onpopstate来检测history堆栈路径的变化,堆栈的路径是通过history.pushState(null, '',"?page=2")添加进去的

由hash路由设置成history路由,给路由添加配置项 mode="history"。

一级路由配置

1、设置相应组件

2、在router-index.js文件中添加路由配置

首先,引入组件,然后配置路由规则 {path:设置路径,name:名,component:组件}

3、在需要当前组件的地方给页面添加<router-view></router-view>

4、设置导航路径

使用vue提供<router-link to="路径"></router-link> ,默认的解析成a标签

5、设置默认路由

6、设置导航链接的样式

二级路由配置

1、需要定义组件

2、确定好在哪个组件配置二级路由,就去哪个组件的配置规则中添加children关键字,按照一级路由的配置方法配置规则

3、在需要配置二级路由的组件中添加<router-view></router-view>

4、设置导航路径

使用vue提供<router-link to="路径"></router-link> ,默认的解析成a标签

5、设置导航链接的样式

我们可以定义一个一级路由,里面可以包裹底部footer组件,让他为二级路由,这时点击底部的二级路由时,就会切换不同的页面,而不需要底部组件显示的时候,那我们再配置一个一级路由就好了!!!

Vue中展示二级路由的默认模块/二级路由默认显示

1. 新建一个二级路由 导入到router/index.js 并配置

2. 在盛放子路由的页面加入router-link 与 router-view标签

3. 点击带有router-link标签的按钮即可展示子路由

Vue路由,二级路由及跳转

* router/index.js文件:

/* 导入Vue构造函数 */
import Vue from "vue";
/* 导入路由VueRouter构造函数 */
import VueRouter from "vue-router";
/* 导入HomeView页面 */
import HomeView from "../views/HomeView.vue";// 调用构造函数Vue的use方法,传入VueRouter构造函数
// 作用是把VueRouter作为一个插件全局插入到Vue中
Vue.use(VueRouter);/* 定义一个路由数组对象 */
const routes = [/***一个对象就对应了一个路由*path 就是路由的地址*name 给路由起的名字*component 具体跳转的是哪个组件页面*/{/* path: '/' 根页面,表示已进入就显示的页面 */path: "/",name: "home",/* 这种方式一进入页面就会全部加载,不是用到的时候再加载,性能没有懒加载的方式好 */component: HomeView,/* 可以使用redirect重定向,一进入主页就展示第一个子页面,redirect 后面跟的是路径名,并不是name *//* 因为/是根路径,所以可以直接写one */redirect: "oneview",children: [{path: "oneview",name: "oneview",component: () => import("../views/OneView.vue"),},],},{/* 这里是一级目录所以可以加斜杠/,表示根目录 */path: "/about",name: "about",// route level code-splitting// this generates a separate chunk (about.[hash].js) for this route// which is lazy-loaded when the route is visited./* 懒加载功能:一开始不加载,当你切换路由的时候再加载 */component: () =>import(/* webpackChunkName: "about" */ "../views/AboutView.vue"),/* about不是根路径,所以redirect后面要写全'/about/aboutchild' */redirect: "/about/aboutchild",children: [{path: "aboutchild",name: "aboutchild",component: () => import("../views/AboutChild.vue"),},],},{path: "/ChildA",name: "ChildA",component: () => import("../components/ChildA.vue"),},{path: "/ChildB",name: "ChildB",component: () => import("../components/ChildB.vue"),},{/* path:'*' 必须要放最后 *//* path:'*' 表示上面的路由没有匹配到,则进入下面的页面 */path: "*",name: "notfound",component: () => import("../components/NotFound.vue"),},
];/* 实例化构造函数 VueRouter 产生一个实例化对象,并把上面的路由数组对象routes当作参数 以对象的方式传给构造函数 VueRouter */
const router = new VueRouter({routes,
});/* 把实例化路由对象 router默认导出  */
export default router;

* main.js文件:

/* 导入Vue构造函数 */
import Vue from "vue";
/* 导入App.vue入口页面 */
import App from "./App.vue";
/* 导入router文件夹中的index.js中的router实例化对象 */
/* 因为一个文件夹里面只有一个index.js文件,所以在脚手架中可以把./router/index.js简写为./router  */
import router from "./router";/* 生产提示 */
/* 改成false是用来关闭开发者提示 */
Vue.config.productionTip = false;
/* 在Vue的对象参数里面配置 el:"#app" 等于.$mount('#app'),都是用来挂载到id为#app的div上的 */
/* 把路由实例化对象router配置在Vue中,作用是保证项目中所有的vue文件都可以使用router路由的属性和方法 */
new Vue({router /* 会把所有vue文件渲染到App组件上 */,render: (h = h(App)),
}).$mount("#app"); /* 等同于el:"#app" */

* views/App.vue文件:

<template><div id="app"><nav><!-- router-link组件是负责路由跳转的,to属性是用来写跳转路径的。router-link组件本质上是用a标签来实现的,路由跳转的原理是根据锚点来的 --><router-link to="/">Home</router-link><router-link to="/about">About</router-link><router-link to="/ChildA">点我跳转ChildA</router-link><router-link to="/ChildB">点我跳转ChildB</router-link></nav><!-- router-view 组件是用来展示组件的容器 --><!-- 创建两个组件ChildA和ChildB,并写两个router-link组件标签可以实现跳转,跳转组件显示在router-view容器中 --><router-view></router-view></div>
</template>
<style scoped>
#app {font-family: Avenir, Helvetica, Arial, sans-serif;-webkit-font-smoothing: antialiased;-moz-osx-font-smoothing: grayscale;text-align: center;color: #2c3e50;
}nav {padding: 30px;
}nav a {font-weight: bold;color: #2c3e50;
}/* .router-link-exact-active 跳转链接被激活的时候加载到router-link身上 */
nav a.router-link-exact-active {color: #42b983;
}
</style>

AboutView.vue文件:

<template><div class="aboutview"><h1>This is an AboutView page</h1><!-- to后面写的是路径 --><!-- <router-link to="/about/aboutchild">我是aboutchild</router-link>--><!-- to 后面要加冒号: 作用是把后面解析成一个对象而不是字符串 --><router-link :to="{ name: 'aboutchild' }">我是aboutchild</router-link><!-- 二级路由显示的容器  --><router-view></router-view></div>
</template>
<script>
export default{name:"aboutview",components: {AboutChild",},};
</script><style scoped>
</style>

* AboutChild.vue文件:

<template><div class=aboutChild><h1>AboutChild</h1></div>
</template>
<script>
export default {
}
</script>
<style scoped></style>

* HomeView.vue文件:

<template><div class="homeview"><h1>go!go!go!</h1><router-link to="/oneview">我是OneView</router-link><!-- 二级路由对应的组件容器   --><router-view></router-view></div>
</template><script>
export default {name: "HomeView",components: {OneView},
};
</script>

* OneView.vue文件:

<template><div class="oneview"><h1>我是OneView</h1></div>
</template>
<script>
export default {}
</script>
<style scoped></style>

* components/ChildA.vue文件:

<template><div class="childA"><h1>我是childA</h1></div>
</template>
<script>export default {}
</script><style scoped></style>

* ChildB.vue文件:

<template><div class="childB"><h1>我是childB</h1></div>
</template>
<script>
export default {}
</script><style scoped></style>

* NotFound.vue文件:

<template><div class="notfound"><h1>我是NotFound</h1></div>
</template>
<script>
export default {}
</script><style scoped></style>

左边文件目录:

如何用vue实现二级菜单栏

二级菜单导航是一种很普遍的功能,一般网页都会有这个功能。如果是平常的做法就是改变url,跳到相应的页面;还有一种就是frame。

如果用vue的话,可以用vue-router改变router-view里面的组件,这样就能做到不刷新页面都能跳到相应“页面”。其实url地址还是变了,但是他没有刷新页面其他位置的内容,只是改变了router-view里面的组件,渲染了新的组件。

◼️ 相关参考资料

Vue中实现路由跳转传参的4种方式

简单了解一下vue-router是什么

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/66491.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【javaweb】学习日记Day2 - JavaScript入门

目录 一、引入方式 1、内部脚本 2、外部脚本 二、基础语法 1、输出语句 2、定义变量类型 3、数据类型 4、运算符 &#xff08;1&#xff09;类型转换 5、函数 &#xff08;1&#xff09;方法一 &#xff08;2&#xff09;方法二 三、对象 1、Array数组 &#x…

ATRank: An Attention-Based User Behavior Modeling Framework for Recommendation

Abstract 异构用户行为 我们的模型考虑了【异构用户行为】,我们将所有类型的行为投射到多个潜在的语义空间中,在这些语义空间中,行为之间可以通过自关注产生影响。 异构用户行为(Heterogeneous User Behavior)指的是在一个系统、平台或社交网络中,不同用户在行为模式、兴…

【JavaWeb】实训的长篇笔记(下)

文章目录 八、功能实现1、注册功能2、登录功能3、问题说明4、首页数据显示5、后台管理 八、功能实现 1、注册功能 jsp&#xff1a;能够在页面中把数据动态化&#xff0c;jsp和html在元素标签上是无区别的&#xff0c;区别是html中写上java代码就成了jsp文件。filename.jsp。 需…

PPT颜色又丑又乱怎么办?

一、设计一套PPT时&#xff0c;可以从这5个方面进行设计 二、PPT颜色 &#xff08;一&#xff09;、PPT常用颜色分类 一个ppt需要主色、辅助色、字体色、背景色即可。 &#xff08;二&#xff09;、搭建PPT色彩系统 设计ppt时&#xff0c;根据如下几个步骤&#xff0c;依次选…

年之年的选择,组装版

组件&#xff1a;<!--* Author: liuyu liuyuxizhengtech.com* Date: 2023-02-01 16:57:27* LastEditors: wangping wangpingxizhengtech.com* LastEditTime: 2023-06-30 17:25:14* Description: 时间选择年 - 年 --> <template><div class"year-range-pick…

现代无人机技术

目录 1.发展 2.应用领域 3.对战争的影响 4.给人类带来的福利 5.给人类带来的坏处 1.发展 无人机的发展可以分为以下几个关键步骤&#xff1a; 1. 早期试验和研究&#xff1a;20世纪初&#xff0c;飞行器的概念开始出现&#xff0c;并进行了一些早期的试飞和实验。这些尝试包…

mac安装nvm管理工具遇到的问题和解决方法

nvm 是一款可以管理多版本node的工具&#xff0c;因为是刚买没多久的电脑之前用的都是windows&#xff0c;昨天折腾了一下午终于倒腾好了 第一步&#xff1a; 卸载电脑已有的node&#xff1b;访问nvm脚本网址&#xff0c;另存为到电脑上任何目录&#xff0c;我是放在桌面上的…

学习笔记整理-JS-06-函数

一、函数基本使用 1. 什么是函数 函数就是语句的封装&#xff0c;可以让这些代码方便地被复用。函数具有"一次定义&#xff0c;多次调用"的优点。使用函数&#xff0c;可以简化代码&#xff0c;让代码更具有可读性。 2. 函数的定义和调用 和变量类似&#xff0c;函…

webpack性能优化

代码分离 代码分离是webpack中一个非常重要的特性&#xff1a; 它主要的目的是将代码分离到不同的bundle中&#xff0c;之后我们可以按需加载&#xff0c;或者并行加载这些文件比如默认情况下&#xff0c;所有的JavaScript代码&#xff08;业务代码、第三方依赖、暂时没有用到…

Netty:channel的事件顺序

服务端&#xff1a;正常启动的channel事件顺序 REGISTERED -> BIND -> ACTIVE 客户端&#xff1a;正常启动的channel事件顺序 REGISTERED -> CONNECT -> ACTIVE 服务端&#xff1a;接收到客户端连接&#xff0c;为客户端分配的channel的事件顺序 REGISTERED…

日常BUG—— SpringBoot项目DEBUG模式启动慢、卡死。

&#x1f61c;作 者&#xff1a;是江迪呀✒️本文关键词&#xff1a;日常BUG、BUG、问题分析☀️每日 一言 &#xff1a;存在错误说明你在进步&#xff01; 一、问题描述 我们调试程序时&#xff0c;需要使用DEBUG模式启动SpringBoot项目&#xff0c; 有时候会发…

【Mybatis】调试查看执行的 SQL 语句

1. 问题场景&#xff1a; 记录日常开发过程中 Mybatis 调试 SQL 语句&#xff0c;想要查看Mybatis 中执行的 SQL语句&#xff0c;导致定位问题困难 2. 解决方式 双击shift找到mybatis源码中的 MappedStatement的getBoundSql()方法 public BoundSql getBoundSql(Object para…