Vue Router之多级路由

一、Vue Router 的多级路由实现。

1.改写路由配置,为需要添加多级路由的页面,添加children属性。

这里我们添加在Works 页面里的。

// 配置路由
const router = new VueRouter({
  routes:[
    {path:'/',component:Home},
    {path:'/works',component:Works,name:'WorksLink',
      //配置多级路由,在children数组里添加子路由信息
      children:[
        {path:'/work1',component:work1},
        {path:'/work2',component:work2},
        {path:'/work3',component:work3}
      ]
    },
    {path:'/about',component:About},
    {path:"*",redirect:'/'} //默认跳转
  ],
  mode:'history'
})

2.在Works组件中引用并创建跳转链接

<!-- 创建路由跳转 -->
        <ul>
            <li><router-link to="work1">Work1</router-link></li>
            <li><router-link to="work2">Work2</router-link></li>
            <li><router-link to="work3">Work3</router-link></li>
        </ul>
        <!-- 引用路由 -->
        <router-view></router-view>

此时点击链接进行跳转,结果:

注意红线处的地址!!!

此时我们的地址是采用 斜杠+地址 的形式。

当我们改写成 直接 地址 的形式,看一下会有什么区别。

// 配置路由
const router = new VueRouter({
  routes:[
    {path:'/',component:Home},
    {path:'/works',component:Works,name:'WorksLink',
      children:[
        {path:'work1',component:work1},
        {path:'work2',component:work2},
        {path:'work3',component:work3}
      ]
    },
    {path:'/about',component:About},
    {path:"*",redirect:'/'} //默认跳转
  ],
  mode:'history'
})

对应的组件中的跳转也需要改变

<!-- 创建路由跳转 -->
        <ul>
            <li><router-link to="/works/work1">Work1</router-link></li>
            <li><router-link to="/works/work2">Work2</router-link></li>
            <li><router-link to="/works/work3">Work3</router-link></li>
        </ul>
        <!-- 引用路由 -->
        <router-view></router-view>

观察结果:

一个是直接在根路径下跳转,

一个则是父组件的路径下。

具体喜欢哪一个,看自己,反正我觉得第二终好一点。

三级路由同理,继续在跳转的组件中添加children。。。

3.设置默认路由。

当我们跳到Works页面时,如图:

这里的没有内容,必须等我们点击Work1或works2,3才会显示出来。

解决方法:

在父路由添加属性  redirect :‘跳转地址’,

// 配置路由
const router = new VueRouter({
  routes:[
    {path:'/',component:Home},
    {path:'/works',component:Works,name:'WorksLink',
      redirect:'works/work1',//添加该属性
      children:[
        {path:'work1',component:work1},
        {path:'work2',component:work2},
        {path:'work3',component:work3}
      ]
    },
    {path:'/about',component:About},
    {path:"*",redirect:'/'} //默认跳转
  ],
  mode:'history'
})    

这样跳转到Works页面就会直接加载work1。

二、嵌套命名视图,了解一下。

现在我们想在Home中把Works中的三个works加载出来,通过路由。

实现方法:

// 配置路由
const router = new VueRouter({
  routes:[
    {path:'/',
    components:{ //嵌套命名,将component加s default为默认路由
      default:Home,
      theWork1:work1,
      theWork2:work2,
      theWork3:work3
    }},
    {path:'/works',component:Works,name:'WorksLink',redirect:'works/work1',
      children:[
        {path:'work1',component:work1},
        {path:'work2',component:work2},
        {path:'work3',component:work3}
      ]
    },
    {path:'/about',component:About},
    {path:"*",redirect:'/'} //默认跳转
  ],
  mode:'history'
})

这里我们在Home的子组件中进行引用:

却发现页面无法加载该引用!!!

<template>
    <div>
        <h1>Hello World</h1>
        <router-view name="theWork1"></router-view>
        <router-view name="theWork2"></router-view>
        <router-view name="theWork3"></router-view>
    </div>
</template>

但是在根组件app.vue中,可以。

原因:不明,如果你知道,请一定告诉我。

(官方文档也是一笔带过,无语...)

三、滚动行为

注意: 这个功能只在支持 history.pushState 的浏览器中可用。

具体还是看 官方文档 吧!

转载于:https://www.cnblogs.com/tcxq/p/10863837.html

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Vue Router 可以实现多级由的动态加载。多级由是指由的层级关系,比如父级由包含子级由,子级由可能还包含更多的子级由。 在Vue Router中,可以使用嵌套由来实现多级由。通过定义父级由和子级由的配置,可以实现由的层级关系。 动态加载指的是根据需要动态加载由组件,而不是一次性加载所有由组件。这样可以减少页面加载时间,提高应用性能。 在Vue Router中,可以使用懒加载来实现动态加载由组件。懒加载使用webpack的code splitting功能,将由组件分割成独立的文件,当访问到对应的由时再加载该由对应的组件。 通过使用懒加载,可以实现多级由的动态加载。只有当访问到某个由时,才会加载该由对应的组件。这样可以提高应用的加载速度,避免一次性加载大量组件导致的性能问题。 需要注意的是,在配置由时,需要将需要懒加载的由组件使用`import()`语法动态导入,同时通过`resolve`函数进行异步加载。这样就可以实现多级由的动态加载。 总结起来,Vue Router可以通过嵌套由实现多级由的层级关系,通过懒加载实现由组件的动态加载。这样可以提高应用的性能,同时减少页面加载时间。 ### 回答2: Vue Router 多级由动态加载是指在Vue项目中,用于实现通过由跳转来动态加载多级组件的功能。 首先,在Vue项目中,我们可以使用Vue Router来管理由。Vue RouterVue.js官方提供的由管理插件,它可以让我们在单页面应用(SPA)中进行页面间的跳转和管理。 要实现多级由动态加载,我们需要使用Vue Router的懒加载功能。懒加载是指在需要用到某个组件时才加载对应的组件代码,而不是一开始就将所有组件的代码都加载进来。 首先,在由配置中,我们可以使用Vue Router提供的`component`选项来指定某个由所对应的组件。而在多级由动态加载中,我们可以将组件的配置设置为一个返回组件的函数。 例如,我们可以在由配置中定义如下的由: ``` const routes = [ { path: '/parent', component: () => import('./components/Parent.vue'), children: [ { path: 'child', component: () => import('./components/Child.vue') } ] } ] ``` 在上述配置中,`component`选项指定了`Parent`组件,而`children`选项定义了`Parent`组件下的子由,其中子由`child`的组件通过懒加载的方式动态加载。 当访问`/parent/child`这个由时,Vue Router会根据配置动态地加载`Parent`组件和`Child`组件的代码,并渲染到对应的由视图中。 这样,我们就实现了多级由动态加载的功能。通过懒加载的方式,可以有效减少初始加载的资源,并提升页面的加载速度和性能。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值