vue嵌套路由

本文详细介绍了如何在Vue.js应用中设置嵌套路由,包括创建子目录、配置路由、编写组件及引入路由信息。在Main.vue中通过实现内容切换,并给出了在实际操作中遇到的关于axios和sass-loader的错误及其解决方案,分别是降低sass-loader和node-sass的版本。
摘要由CSDN通过智能技术生成

一、为什么要使用嵌套路由?

就比如在一个页面中, 在页面的上半部分,有三个按钮,而下半部分是根据点击不同的按钮来显示不同的内容,那么我们就可以在这个组件中的下半部分看成是一个嵌套路由,也就是说在这个组件的下面需要再来一个 < router-view >, 当我点击不同的按钮时,他们的router-link分别所指向的组件就会被渲染到这个< router-view >中。

[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-2852hNUh-1635221087094)(pictures/image-20211026103001892.png)]

二、步骤演示:

  1. 在views目录下新建user目录,编写User.vue和Profile.vue
  2. 配置路由信息 router/index.js
  3. 编写Main.vue
  4. 编写main.js,导入路由信息

1.在views目录下新建user目录,编写User.vue和Profile.vue

Profile.vue

<template>
    <h1>这是用户信息页面</h1>
</template>

<script>
  // 导出的名字可以与组件名字不一样,引用的时候,引用导出的名字即可
    export default {
        name: "UserProfile"
    }
</script>

<style scoped>

</style>

User.vue

<template>
  <div>
      <h1>这是用户页面</h1>
      <p>路由嵌套,你会了吗?</p>
  </div>
</template>

<script>
  // 导出的名字可以与组件名字不一样,引用的时候,引用导出的名字即可
  export default {
        name: "UserList"
    }
</script>

<style scoped>

</style>

2.配置路由信息 router/index.js

import Vue from 'vue'
import VueRouter from 'vue-router'

// 导入对应的插件
import Main from '../views/Main'
import Login from '../views/Login'

// 导入定义的组件
import UserList from '../views/user/User'
import UserProfile from '../views/user/Profile'

// 安装路由,显示声明使用VueRouter才生效
Vue.use(VueRouter);

// 导出路由
export default new VueRouter({
  // 配置路由信息
  routes: [
    {
      // 路由路径
      path: '/main',
      // 跳转的组件
      component: Main,
      // 子路由,即嵌套路由
      children:[
        {

          path: '/user/profile',
          component: UserProfile
        },
        {
          path: '/user/list',
          component: UserList
        }
      ]
    },
    {
      path: '/login',
      component: Login
    }
  ]

});

3.编写Main.vue

<template>
  <div>
    <el-container>
      <el-aside width="200px">
        <el-menu :default-openeds="['1']">
          <el-submenu index="1">
            <template slot="title"><i class="el-icon-caret-right"></i>内容管理</template>
            <el-menu-item-group>
              <el-menu-item index="1-1">分类管理</el-menu-item>
              <el-menu-item index="1-2">内容列表</el-menu-item>
            </el-menu-item-group>
          </el-submenu>

          <el-submenu index="2">
            <template slot="title"><i class="el-icon-caret-right"></i>用户管理</template>
            <el-menu-item-group>
            <el-menu-item index="2-1">
              <router-link to="/user/profile" class="router-link-active">用户信息</router-link>
            </el-menu-item>

            <el-menu-item index="2-2">
              <router-link to="/user/list" class="router-link-active">用户列表</router-link>
              </el-menu-item>
          </el-menu-item-group>
          </el-submenu>
        </el-menu>
      </el-aside>
      <el-container>
        <el-main>
          <!--组件的渲染-->
          <router-view></router-view>
        </el-main>
      </el-container>
    </el-container>
  </div>
</template>

<script>
    export default {
        name: "Main"
    }
</script>

  <style scoped lang="scss">
  .e1-header{
    background-color:#2acaff;
    color: #333;
    line-height:60px;
  }
  .el-aside{
    color: #333;
  }
  .router-link-active {
    text-decoration: none;
    color: #000;
  }
  </style>

4.编写main.js,导入路由信息

// The Vue build version to load with the `import` command
// (runtime-only or standalone) has been set in webpack.base.conf with an alias.
import Vue from 'vue'
import App from './App'
//自动扫描里面的路由配置,如/router/index.js,  ./当前文件
import router from './router'

import ElementUI from 'element-ui';
import 'element-ui/lib/theme-chalk/index.css';
Vue.config.productionTip = false;
Vue.use(router);
Vue.use(ElementUI);

/* eslint-disable no-new */
new Vue({
  el: '#app',
  // 配置路由
  router,
  render: h => h(App) // ElementUI
});

效果:
url: http://localhost:8080/#/main

在这里插入图片描述

三、碰到的问题

…/…/node_modules/axios in ./node_modules/babel-loader/lib!./node_modules/vue-loader/lib/selector.js?type=script&index=0!./src/ views/Login.vue
在这里插入图片描述

四、解决方案

方案一

  1. Module build failed: TypeError: this.getOptions is not a function
  2. 原因: 出现问题的原因是安装的sass-loader版本过高,选择安装较低版本的sass-loader即可。
  3. 解决方案:选择下面其中一个执行就可!

1.手动修改sass-loader版本:
在这里插入图片描述
2.输入下面命令

npm install sass-loader@7.3.1 --save-dev

方案二

1.Module build failed: Error: Node Sass version 6.0.1 is incompatible with ^4.0.0.
2.原因:出现问题的原因是安装的sass版本过高,选择安装4.0+版本的sass即可。
3.解决方案:选择下面其中一个执行就可!

1.手动修改sass-loader版本:
在这里插入图片描述

2.输入下面命令

npm install node-sass@4.14.1 --save-dev
  • 3
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
Vue嵌套路由与布局是指在Vue项目中使用嵌套路由来实现页面布局的一种方式。通过嵌套路由,我们可以将一个页面拆分为多个子页面,每个子页面都有自己的路由配置和布局。这样可以更方便地管理页面的结构与样式。 在Vue中使用嵌套路由需要先定义一个父路由,并在其下定义多个子路由。在父路由页面的template中使用<router-view>标签来渲染当前子路由页面的内容。这样当我们在浏览器中访问某个子路由路径时,Vue会根据该路径找到对应的组件并渲染在<router-view>标签中。 嵌套路由的好处是可以实现页面模块化开发,不同的子页面可以由不同的团队成员负责开发和维护,降低了耦合性,提高了开发效率。另外,嵌套路由还可以实现不同布局的切换。即,我们可以根据不同的子路由来切换不同的布局,如头部导航栏、底部标签栏等。 实际应用中,我们可以通过嵌套路由来实现类似于后台管理系统的页面布局。将整个页面划分为侧边栏、顶部导航栏和主内容区等多个模块组成的布局。每个模块可以通过嵌套路由来管理子页面内容,比如侧边栏可以包含多个菜单项,每个菜单项对应一个子页面。这样可以方便地进行页面导航和切换。 总体来说,Vue嵌套路由与布局是一种灵活、高效的页面管理和布局方式,可以帮助我们组织和维护复杂的页面结构,提高开发效率。同时,它也是Vue框架强大的路由功能的一部分,为我们开发更加复杂和丰富的前端应用提供了更多的可能性。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值