vue 路由嵌套_vue路由实现方式
2023-06-13 09:12:44 时间
大家好,又见面了,我是你们的朋友全栈君。
嵌套路由
有时候在路由中,主要的部分是相同的,但是下面可能是不同的。比如访问首页,里面有新闻类的/home/news
,还有信息类的/home/message
。这时候就需要使用到嵌套路由。项目结构如下:
我们创建了3个组件,分别是Home.vue
,HomeNews.vue
,HomeMessage.vue
,代码如下:
Home.vue
<template>
<div class="home">
<h1>Home</h1>
<router-link to="/home/news">新闻类</router-link> // 注意这里一定要写完整路径不能只写/news,需要加上/home
<router-link to="/home/message">信息类</router-link>
<router-view></router-view>
</div>
</template>
<script>
export default {
name: "Home",
};
</script>
<style scoped>
</style>
HomeNews
<template>
<div class="homeNews">
<ul>
<li>新闻1</li>
<li>新闻2</li>
<li>新闻3</li>
<li>新闻4</li>
</ul>
</div>
</template>
<script>
export default {
name: "HomeNews"
}
</script>
<style scoped>
</style>
HomeMessage
<template>
<div class="homeMessage">
<ul>
<li>消息1</li>
<li>消息2</li>
<li>消息3</li>
<li>消息4</li>
</ul>
</div>
</template>
<script>
export default {
name: "HomeMessage"
}
</script>
<style scoped>
</style>
组件写完以后,我们在router
文件夹下的index.js
文件中配置路由
import Vue from "vue";
import VueRouter from "vue-router";
Vue.use(VueRouter);
// 这里还是使用路由懒加载
const Home = () => import('../views/Home')
const HomeNews = () => import('../views/HomeNews')
const HomeMessage = () => import('../views/HomeMessage')
const routes = [
{
path: "/home",
name: "Home",
component: Home,
// 子路由的写法
children: [
{
path: "news",
name: "HomeNews",
component: HomeNews
},
{
path: "message",
name: "HomeMessage",
component: HomeMessage
},
]
},
{
path: "",
redirect: "home"
}
];
const router = new VueRouter({
routes,
mode: 'history',
});
export default router;
嵌套路由的写法很简单,你会发现,children
配置就是像 routes
配置一样的路由配置数组,所以呢,你可以嵌套多层路由。
此时,基于上面的配置,当你访问 /home/
时,home 的出口是不会渲染任何东西。
这是因为没有匹配到合适的子路由。如果你想要渲染点什么,可以提供一个 空的
子路由:
const routes = [
{
path: "/home",
name: "Home",
component: Home,
children: [
{
path: "news",
name: "HomeNews",
component: HomeNews
},
{
path: "message",
name: "HomeMessage",
component: HomeMessage
},
// 新增空的子路由
{
path: "",
redirect: "news"
}
]
},
{
path: "",
redirect: "home"
}
];
这样页面就默认会重定向到news
页面,会展示news
的信息
发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/165721.html原文链接:https://javaforall.cn
相关文章
- [ Vue ] vue 设计原理之响应式系统实现笔记( 二 )
- Vue之Router(二)
- vue组件 订单支付15分钟倒计时
- vue父子组件传值:详解父组件向子组件传值(props)
- vue判断map是否为空
- vue-router 多级路由redirect 重定向的问题
- vue JS 对象转数组[通俗易懂]
- vue父子组件传值方法_vue父组件向子组件传递对象
- VUE双向绑定原理_vue的数据绑定怎么实现
- Vue组件库实现按需引入可以这么做
- vue路由懒加载的实现方式_vue路由懒加载实现原理
- vue 父组件调用子组件的函数_vue子组件触发父组件方法
- vue路由懒加载的实现方式_vue-router路由模式
- vue路由传参的两种方式的区别_vue路由跳转获取参数
- Vue调试工具安装(vue devtools)
- vue路由嵌套,配置children嵌套路由
- Vue的computed和watch的区别是什么
- vue 路由 按需 keep-alive
- Vue Router前端路由
- Element 官方宣布了:Element UI for Vue 3.0 来了!
- 安装Vue on Linux:轻松搭建开发环境(linux安装vue)
- vue.js 路由参数传给组件详解编程语言
- 优化网站性能,Vue搭配Redis缓存更加有效(vue使用redis缓存)
- Vue中触发Redis订阅通知(vue中订阅redis)