vue-router子路由的实现

在应用界面开发中通常由多层嵌套的组件组合而成。但随着页面的增多,如果把所有的页面都塞到一个 routes 数组里面会显得很乱,你无法确定哪些页面存在关系。借助 vue-router 提供了嵌套路由的功能,让我们能把相关联的页面组织在一起。


实验目的

在我们的商城项目中,后台管理页 Admin 涉及到很多操作页面,比如:

  • /admin 主页面
  • /admin/create 创建新信息
  • /admin/edit 编辑信息

让我们通过嵌套路由的方式将它们组织在一起。


创建Admin页面

在src/views下创建 Admin.vue,并创建admin目录,以用来存放admin的子页面( 使用vue-router的子路由,需要在父组件利用 router-view占位 )

  • Admin.vue

    <template>
      <div class="title">
        <h1>{{ msg }}</h1>
        <!-- 路由插槽 -->
        <router-view></router-view>
      </div>
    </template>
    
    <script>
    export default {
      name: "home",
    
      data() {
        return {
          msg: "This is the Admin Page",
        };
      },
    };
    </script>
    
    <style scoped>
    </style>
    

创建子页面

在src/views下创建admin目录用来存放admin的子页面,在admin目录下新建Create.vue 和 Edit.vue 来实现/create 创建新的商品/edit 编辑商品信息

  • Create.vue

    <template>
      <div>
        <div class="title">
          <h1>This is Admin/Create</h1>
        </div>
      </div>
    </template>
    
  • Edit.vue

    <template>
      <div>
        <div class="title">
          <h1>This is Admin/Edit</h1>
        </div>
      </div>
    </template>
    

修改router/index.js代码

增加子路由,子路由的写法是在原有的路由配置下加入children字段。

children:[
    {path:'/',component:xxx},
    {path:'xx',component:xxx}
]

注意: children里面的path 不要加 / ,加了就表示是根目录下的路由。

  • index.js

    import Vue from 'vue'
    import VueRouter from 'vue-router'
    import Admin from '@/views/Admin.vue'
    
    // 导入admin子路由
    import Create from '@/views/admin/Create';
    import Edit from '@/views/admin/Edit';
    
    Vue.use(VueRouter)
    
    const routes = [
      {
        path: '/admin',
        name: 'Admin',
        component: Admin,
        children: [
          {
            path: 'create',
            component: Create,
          },
          {
            path: 'edit',
            component: Edit,
          }
        ]
      }
    ]
    
    const router = new VueRouter({
      routes
    })
    
    export default router
    
    

至此 Vue-router 子路由(嵌套路由)创建完成


感谢大家的耐心阅读,如有建议请私信或评论留言
  • 14
    点赞
  • 45
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue.js 支持通过嵌套路由实现复杂的页面结构和导航。路由是指在父路由下的一组路由,可以在父路由对应的组件中使用 `<router-view>` 标签来显示路由对应的组件。 在 Vue.js 中配置路由非常简单,只需要在父路由对象中定义一个 children 数组,该数组中包含多个路由对象,每个路由对象都需要定义 path、name、component 等属性,例如: ``` const routes = [ { path: '/parent', component: Parent, children: [ { path: 'child1', name: 'Child1', component: Child1 }, { path: 'child2', name: 'Child2', component: Child2 } ] } ] ``` 在上面的代码中,我们定义了一个名为 `Parent` 的父组件,它包含了两个路由 `Child1` 和 `Child2`,它们的路径分别为 `/parent/child1` 和 `/parent/child2`。当访问 `/parent/child1` 时,Vue.js 会先显示 `Parent` 组件,然后在 `Parent` 组件中的 `<router-view>` 标签中显示 `Child1` 组件。 需要注意的是,路由的路径不需要带上父路由的路径,它们的路径是相对于父路由的路径来定义的。在配置路由时,我们可以使用相对路径或绝对路径来定义路由的路径,例如: ``` const routes = [ { path: '/parent', component: Parent, children: [ { path: 'child1', name: 'Child1', component: Child1 }, { path: '/child2', name: 'Child2', component: Child2 } ] } ] ``` 在上面的代码中,`Child1` 的路径是相对于 `Parent` 的路径来定义的,而 `Child2` 的路径是绝对路径,它不受父路由路径的影响。

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值