vue-router的基本使用

vue-router

vue-router的基本使用

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>vue-router的基本使用</title>
  <!-- 1.导入 vue 文件:首先vue.js/然后vue-router.js -->
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>
<!-- 
    vue-router是Vue.js官方的路由管理器。它和vue.js的核心深度集成,可以非常方便的用于SPA应用程序的开发。
    Vue Router包含的功能结构:
        1.支持HTML5历史模式或hash模式
        2.支持嵌套路由
        3.支持路由参数
        4.支持编程式路由
        5.支持命名路由

    vue-router的基本使用:
    1.导入 vue 文件:首先 vue.js、然后 vue-router.js 

    2.添加路由连接: <router-link to="/user">User</router-link>
        * router-link是vue中提供的标签,默认会被渲染为a标签
        * to属性默认会被渲染为href属性
        * to属性的值默认会被渲染为#开头的hash地址

    3.路由占位符:<router-view></router-view>
        * 将来通过路由规则匹配到的组件,将会被渲染到router-view所在的位置

    4.创建路由组件 const 组件名 = {template:` `}

    5.创建路由实例 且 配置路由规则 routes 
        * routes是路由规则数组
        * 每个路由规则都是一个配置对象,其中至少包含path: 和 component:两个属性
        * path      表示当前路由规则---匹配的hash地址
        * component 表示当前路由规则---对应要展示的组件
    const router =new VueRouter({
        routes:[{
            path: '/user',
            component: 路由名称
        }]
    })
    
    6.挂载路由router,到Vue实例对象中
   -->

<body>
  <!-- 被 vm 实例所控制的区域 -->
  <div id="app">
    <!-- 2.添加路由连接 -->
    <router-link to="/user">User</router-link>
    <router-link to="/register">Register</router-link>

    <!-- 3.路由占位符 -->
    <router-view></router-view>
  </div>

  <script>
    // 4.创建路由组件
    const User = {
      template: '<h1>User 组件</h1>'
    }

    const Register = {
      template: '<h1>Register 组件</h1>'
    };

    // 5.配置路由规则并创建路由实例

    // 创建路由实例对象
    const router = new VueRouter({
      // 所有的路由规则:path内容与router-link标签中的to属性中的内容保持一致!
      routes: [{
        path: '/user',
        component: User
      }, {
        path: '/register',
        component: Register
      }]
    });

    // 创建 vm 实例对象
    const vm = new Vue({
      // 指定控制的区域
      el: '#app',
      data: {},
      // 6.挂载路由实例对象(在es6中如果属性名和属性值一样,可以简写)
      // router: router
      router
    })
  </script>
</body>

</html>

路由重定向

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
  <!-- 导入 vue 文件 -->
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>

<body>
  <!-- 被 vm 实例所控制的区域 -->
  <div id="app">
    <router-link to="/user">User</router-link>
    <router-link to="/register">Register</router-link>

    <!-- 路由占位符 -->
    <router-view></router-view>
  </div>

  <script>
    const User = {
      template: '<h1>User 组件</h1>'
    }

    const Register = {
      template: '<h1>Register 组件</h1>'
    }

    // 创建路由实例对象
    const router = new VueRouter({
      // 所有的路由规则
      routes: [
        { path: '/', redirect: '/user' },
        { path: '/user', component: User },
        { path: '/register', component: Register }
      ]
    })

    // 创建 vm 实例对象
    const vm = new Vue({
      // 指定控制的区域
      el: '#app',
      data: {},
      // 挂载路由实例对象
      // router: router
      router
    })
  </script>
</body>

</html>

路由嵌套

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>路由嵌套</title>
  <!-- 导入 vue 文件 -->
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>
<!-- 
    嵌套路由用法:
    1.嵌套路由功能分析:
        * 点击父级路由链接显示模板内容
        * 模板内容中又有子级路由链接
        * 点击子级路由链接显示子级模板内容
    2.父路由组件模板
        * 父级路由链接
        * 父组件路由填充位
    3.子级路由模板
        * 子级路由链接:放在父级模板内容中
        * 子级路由填充位:放在父级模板内容中
    
 -->

<body>
  <!-- 被 vm 实例所控制的区域 -->
  <div id="app">
    <!-- 父级路由链接 -->
    <router-link to="/user">User</router-link>
    <router-link to="/register">Register</router-link>

    <!-- 父组件路由占位符 -->
    <router-view></router-view>
  </div>

  <script>
    const User = {
      template: '<h1>User 组件</h1>'
    }

    const Register = {
      template: `<div>
          <h1>Register 组件</h1>
          <hr/>

          <!-- 1.子路由链接 -->
          <router-link to="/register/tab1">tab1</router-link>
          <router-link to="/register/tab2">tab2</router-link>

          <!-- 2.子路由的占位符 -->
          <router-view />
        <div>`
    };
    // 3.定义子组件
    const Tab1 = {
      template: '<h3>tab1 子组件</h3>'
    }

    const Tab2 = {
      template: '<h3>tab2 子组件</h3>'
    }



    // 创建路由实例对象
    const router = new VueRouter({
      // 所有的路由规则
      routes: [{
        path: '/',
        redirect: '/user'
      }, {
        path: '/user',
        component: User
      },
      // 4.children 数组表示子路由规则
      // 在Register路由规则之下添加属性children:添加子路由规则
      {
        path: '/register',
        component: Register,
        children: [{
          path: '/register/tab1',
          component: Tab1
        }, {
          path: '/register/tab2',
          component: Tab2
        }]
      }
      ]
    })

    // 创建 vm 实例对象
    const vm = new Vue({
      // 指定控制的区域
      el: '#app',
      data: {},
      // 挂载路由实例对象
      // router: router
      router
    })
  </script>
</body>

</html>

动态路由–匹配1

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>Document</title>
  <!-- 导入 vue 文件 -->
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>
<!-- 
    动态路由匹配的含义:
    如果某些路由规则有一部分完全一样,另一部分动态变化;
    这时我们可以将动态变化的部分,形成路由参数
    这些路由参数就叫做动态路由匹配。
    ...................................怎么加参数呢?
    在路由规则中:把动态的部分前面加冒号(冒号表示当前位置匹配的是动态参数),冒号后面的名字就是匹配的参数
    将来路由传递过来的参数,如1,2,3 将来都会当做id值匹配成功;
    匹配成功后,在user组件中就可以通过 $route.params.id 访问匹配到的id值了

    ..................问题:这种方式不够灵活,推荐使用props将组件和路由关联
 -->

<body>
  <!-- 被 vm 实例所控制的区域 -->
  <div id="app">
    <router-link to="/user/1">User1</router-link>
    <router-link to="/user/2">User2</router-link>
    <router-link to="/user/3">User3</router-link>
    <router-link to="/register">Register</router-link>

    <!-- 路由占位符 -->
    <router-view></router-view>
  </div>

  <script>
    // 使用$route.params.id 获取 user/id
    const User = {
      template: '<h1>User 组件 -- 用户id为: {{$route.params.id}}</h1>'
    }

    const Register = {
      template: '<h1>Register 组件</h1>'
    }

    // 创建路由实例对象
    const router = new VueRouter({
      // 所有的路由规则
      routes: [{
        path: '/',
        redirect: '/user'
      }, {
        path: '/user/:id',
        component: User
      }, {
        path: '/register',
        component: Register
      }]
    })

    // 创建 vm 实例对象
    const vm = new Vue({
      // 指定控制的区域
      el: '#app',
      data: {},
      // 挂载路由实例对象
      // router: router
      router
    })
  </script>
</body>

</html>

动态路由–匹配2

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>props传参:布尔值</title>
  <!-- 导入 vue 文件 -->
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>

<body>
  <!-- 被 vm 实例所控制的区域 -->
  <div id="app">
    <router-link to="/user/1">User1</router-link>
    <router-link to="/user/2">User2</router-link>
    <router-link to="/user/3">User3</router-link>
    <router-link to="/register">Register</router-link>

    <!-- 路由占位符 -->
    <router-view></router-view>
  </div>

  <script>
    const User = {
      props: ['id'],  /* 在对应的组件中:1.在props节点中定义路由参数    使用props 接收路由参数*/
      template: '<h1>User 组件 -- 用户id为: {{id}}</h1>'  /*在对应的组件中: 通过插值表达式使用路由参数*/
    }

    const Register = {
      template: '<h1>Register 组件</h1>'
    }

    // 创建路由实例对象
    const router = new VueRouter({
      // 所有的路由规则
      routes: [{
        path: '/',
        redirect: '/user'
      }, {
        path: '/user/:id',  /*:id  表示动态路由参数*/
        component: User,
        props: true        /* 在路由规则中:开启动态路由传参*/
      }, {
        path: '/register',
        component: Register
      }]
    })

    // 创建 vm 实例对象
    const vm = new Vue({
      // 指定控制的区域
      el: '#app',
      data: {},
      // 挂载路由实例对象
      // router: router
      router
    })
  </script>
</body>

</html>

动态路由–匹配3

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>props传参:对象</title>
  <!-- 导入 vue 文件 -->
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>

<body>
  <!-- 被 vm 实例所控制的区域 -->
  <div id="app">
    <router-link to="/user/1">User1</router-link>
    <router-link to="/user/2">User2</router-link>
    <router-link to="/user/3">User3</router-link>
    <router-link to="/register">Register</router-link>

    <!-- 路由占位符 -->
    <router-view></router-view>
  </div>
  <!-- 
        
      注意:无法获取对应的id值!
      因为props为对象,对象中有什么数据;
      在组件中才可以接收什么数据,接收什么数据才可以用什么数据
     -->

  <script>
    const User = {
      props: ['id', 'uname', 'age'],   /* 在对应的组件中:使用props接收传递的参数 */
      template: '<h1>User 组件 -- 用户id为: {{id}} -- 姓名为:{{uname}} -- 年龄为:{{age}}</h1>'
    }

    const Register = {
      template: '<h1>Register 组件</h1>'
    }

    // 创建路由实例对象
    const router = new VueRouter({
      // 所有的路由规则
      routes: [{
        path: '/',
        redirect: '/user'
      }, {
        path: '/user/:id',
        component: User,
        props: {             /* 在路由规则中:为User组件通过路由的形式,传递了动态参数 uname、age */
          uname: 'lisi',
          age: 20
        }
      }, {
        path: '/register',
        component: Register
      }]
    })

    // 创建 vm 实例对象
    const vm = new Vue({
      // 指定控制的区域
      el: '#app',
      data: {},
      // 挂载路由实例对象
      // router: router
      router
    })
  </script>
</body>

</html>

动态路由–匹配4

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>props的值为函数类型:静态参数和动态参数结合!</title>
  <!-- 导入 vue 文件 -->
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>

<body>
  <!-- 被 vm 实例所控制的区域 -->
  <div id="app">
    <router-link to="/user/1">User1</router-link>
    <router-link to="/user/2">User2</router-link>
    <router-link to="/user/3">User3</router-link>
    <router-link to="/register">Register</router-link>

    <!-- 路由占位符 -->
    <router-view></router-view>
  </div>

  <script>
    const User = {
      props: ['id', 'uname', 'age'],
      template: '<h1>User 组件 -- 用户id为: {{id}} -- 姓名为:{{uname}} -- 年龄为:{{age}}</h1>'
    }

    const Register = {
      template: '<h1>Register 组件</h1>'
    }

    // 创建路由实例对象
    const router = new VueRouter({
      // 所有的路由规则
      routes: [{
        path: '/',
        redirect: '/user'
      }, {
        path: '/user/:id',
        component: User,
        /*
            为props指定箭头函数,形参中有route对象(路由中的动态参数对象),
            在箭头函数的函数体中返回props一个对象:1.可以定义静态数据2.也可以定义动态数据
        */
        props: route => ({
          uname: 'zs',
          age: 20,
          id: route.params.id
        })
      }, {
        path: '/register',
        component: Register
      }]
    })

    // 创建 vm 实例对象
    const vm = new Vue({
      // 指定控制的区域
      el: '#app',
      data: {},
      // 挂载路由实例对象
      // router: router
      router
    })
  </script>
</body>

</html>

命名路由

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>命名路由</title>
  <!-- 导入 vue 文件 -->
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>
<!-- 
    命名路由:为了更加方便的表示路由的路径,可以给路由规则起一个别名,即为"命名路由"。
    命名路由的使用步骤:两步走
    1.为路由规则添加name属性  name: 'user'

    2.通过命名路由实现页面跳转:为to属性绑定对象
      <router-link :to="{ name: 'user', params: {id: 3} }">User3</router-link>
      在对象中添加:name属性 和 params属性
        * 点击跳转到name指定的路由规则中
        * 还可以使用params属性为这次跳转传递参数
    

        
    然后在路由规则中接收,然后跳转到/user页面,展示User组件的模板内容
      name: 'user',
      path: '/user/:id',
      component: User,

      
-->


<body>
  <!-- 被 vm 实例所控制的区域 -->
  <div id="app">
    <router-link to="/user/1">User1</router-link>
    <router-link to="/user/2">User2</router-link>
    <!-- 
          **name:表示跳转的路由;params:表示传递的参数**
         -->
    <router-link :to="{ name: 'user', params: {id: 3} }">User3</router-link>
    <router-link to="/register">Register</router-link>

    <!-- 路由占位符 -->
    <router-view></router-view>
  </div>

  <script>
    const User = {
      props: ['id', 'uname', 'age'],
      template: '<h1>User 组件 -- 用户id为: {{id}} -- 姓名为:{{uname}} -- 年龄为:{{age}}</h1>'
    }

    const Register = {
      template: '<h1>Register 组件</h1>'
    }

    // 创建路由实例对象
    const router = new VueRouter({
      // 所有的路由规则
      routes: [{
        path: '/',
        redirect: '/user'
      }, {
        // 命名路由
        name: 'user',
        path: '/user/:id',
        component: User,
        props: route => ({
          uname: 'zs',
          age: 20,
          id: route.params.id
        })
      }, {
        path: '/register',
        component: Register
      }]
    })

    // 创建 vm 实例对象
    const vm = new Vue({
      // 指定控制的区域
      el: '#app',
      data: {},
      // 挂载路由实例对象
      // router: router
      router
    })
  </script>
</body>

</html>

编程式导航

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <meta name="viewport" content="width=device-width, initial-scale=1.0" />
  <meta http-equiv="X-UA-Compatible" content="ie=edge" />
  <title>编程式导航</title>
  <!-- 导入 vue 文件 -->
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>
<!-- 
    页面导航的两种方式:
        * 声明式导航:通过点击链接实现导航的方式,叫做声明式导航。
        例如:普通网页中的<a></a>链接 或 vue中的 <router-link></router-link>
        先声明标签,再实现导航功能。

        * 编程式导航:通过调用JavaScript形式的API实现导航的方式,叫做编程式导航
        例如:普通网页中的location.href

    编程式导航基本用法:
    常用的编程式导航API如下:
        1. this.$router.push('hash地址')  跳转到指定的页面
        2. this.$router.go(n) 实现前进和后退功能  n表示数字,正数表示向前;负数表示后退

    编程式导航的用法:
        1.为按钮添加点击事件,并且执行事件处理函数
        2.在事件处理函数中:实现跳转到指定页面 或者 前进和后退功能

    补充内容:
    编程式导航参数规则
    router.push()方法的参数规则
    1.字符串(路径名称) router.push('/home')
    2.对象 router.push({path:'/home'})
    3.命名的路由(传递参数) router.push({name:'/user',params:{userId:3}})
    4.带查询函数,变成 /register?uname=lisi
    router.push({path:'/register',query:{uname:'lisi'}})

    
 -->

<body>
  <!-- 被 vm 实例所控制的区域 -->
  <div id="app">
    <router-link to="/user/1">User1</router-link>
    <router-link to="/user/2">User2</router-link>
    <router-link :to="{ name: 'user', params: {id: 3} }">User3</router-link>
    <router-link to="/register">Register</router-link>

    <!-- 路由占位符 -->
    <router-view></router-view>
  </div>

  <script>
    const User = {
      props: ['id', 'uname', 'age'],
      template: `<div>
          <h1>User 组件 -- 用户id为: {{id}} -- 姓名为:{{uname}} -- 年龄为:{{age}}</h1>
          <button @click="goRegister">跳转到注册页面</button>
        </div>`,
      methods: {
        goRegister() {
          this.$router.push('/register')
        }
      },
    }

    const Register = {
      template: `<div>
          <h1>Register 组件</h1>
          <button @click="goBack">后退</button>
        </div>`,
      methods: {
        goBack() {
          this.$router.go(-1)
        }
      }
    }

    // 创建路由实例对象
    const router = new VueRouter({
      // 所有的路由规则
      routes: [{
        path: '/',
        redirect: '/user'
      }, {
        // 命名路由
        name: 'user',
        path: '/user/:id',
        component: User,
        props: route => ({
          uname: 'zs',
          age: 20,
          id: route.params.id
        })
      }, {
        path: '/register',
        component: Register
      }]
    })

    // 创建 vm 实例对象
    const vm = new Vue({
      // 指定控制的区域
      el: '#app',
      data: {},
      // 挂载路由实例对象
      // router: router
      router
    })
  </script>
</body>

</html>

综合案例:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8" />
  <title>基于vue-router的案例</title>
  <style type="text/css">
    html,
    body,
    #app {
      margin: 0;
      padding: 0px;
      height: 100%;
    }

    .header {
      height: 50px;
      background-color: #545c64;
      line-height: 50px;
      text-align: center;
      font-size: 24px;
      color: #fff;
    }

    .footer {
      height: 40px;
      line-height: 40px;
      background-color: #888;
      position: absolute;
      bottom: 0;
      width: 100%;
      text-align: center;
      color: #fff;
    }

    .main {
      display: flex;
      position: absolute;
      top: 50px;
      bottom: 40px;
      width: 100%;
    }

    .content {
      flex: 1;
      text-align: center;
      height: 100%;
    }

    .left {
      flex: 0 0 20%;
      background-color: #545c64;
    }

    .left a {
      color: white;
      text-decoration: none;
    }

    .right {
      margin: 5px;
    }

    .btns {
      width: 100%;
      height: 35px;
      line-height: 35px;
      background-color: #f5f5f5;
      text-align: left;
      padding-left: 10px;
      box-sizing: border-box;
    }

    button {
      height: 30px;
      background-color: #ecf5ff;
      border: 1px solid lightskyblue;
      font-size: 12px;
      padding: 0 20px;
    }

    .main-content {
      margin-top: 10px;
    }

    ul {
      margin: 0;
      padding: 0;
      list-style: none;
    }

    ul li {
      height: 45px;
      line-height: 45px;
      background-color: #a0a0a0;
      color: #fff;
      cursor: pointer;
      border-bottom: 1px solid #fff;
    }

    table {
      width: 100%;
      border-collapse: collapse;
    }

    td,
    th {
      border: 1px solid #eee;
      line-height: 35px;
      font-size: 12px;
    }

    th {
      background-color: #ddd;
    }
  </style>
  <script src="./lib/vue_2.5.22.js"></script>
  <script src="./lib/vue-router_3.0.2.js"></script>
</head>

<body>
  <!-- 1.要被 vue 实例所控制的区域 -->
  <div id="app">
    <!-- 路由占位符 -->
    <router-view></router-view>
  </div>

  <script>
    // 定义 APP 根组件
    const App = {
      template: `<div>
          <!-- 头部区域 -->
          <header class="header">后台管理系统</header>
          <!-- 中间主体区域 -->
          <div class="main">
            <!-- 左侧菜单栏 -->
            <div class="content left">
              <ul>
                <li><router-link to="/users">用户管理</router-link></li>
                <li><router-link to="/rights">权限管理</router-link></li>
                <li><router-link to="/goods">商品管理</router-link></li>
                <li><router-link to="/orders">订单管理</router-link></li>
                <li><router-link to="/settings">系统设置</router-link></li>
              </ul>
            </div>
            <!-- 右侧内容区域 -->
            <div class="content right"><div class="main-content">
              <router-view />
            </div></div>
          </div>
          <!-- 尾部区域 -->
          <footer class="footer">版权信息</footer>
        </div>`
    };
    // es6的语法:函数声明
    // data(){} 功能和 data:function(){} 一样!

    const Users = {
      data() {
        return {
          userlist: [{
            id: 1,
            name: '张三',
            age: 10
          }, {
            id: 2,
            name: '李四',
            age: 20
          }, {
            id: 3,
            name: '王五',
            age: 30
          }, {
            id: 4,
            name: '赵六',
            age: 40
          }]
        }
      },
      methods: {
        goDetail(id) {
          console.log(id)
          this.$router.push('/userinfo/' + id)
        }
      },
      template: `<div>
        <h3>用户管理区域</h3>
        <table>
          <thead>
            <tr><th>编号</th><th>姓名</th><th>年龄</th><th>操作</th></tr>
          </thead>
          <tbody>
            <tr v-for="item in userlist" :key="item.id">
              <td>{{item.id}}</td>
              <td>{{item.name}}</td>
              <td>{{item.age}}</td>
              <td>
                <a href="javascript:;" @click="goDetail(item.id)">详情</a>
              </td>
            </tr>
          </tbody>
        </table>
      </div>`
    }

    const UserInfo = {
      props: ['id'],
      template: `<div>
          <h5>用户详情页 --- 用户Id为:{{id}}</h5>
          <button @click="goback()">后退</button>
        </div>`,
      methods: {
        goback() {
          // 实现后退功能
          this.$router.go(-1)
        }
      }
    }

    const Rights = {
      template: `<div>
        <h3>权限管理区域</h3>
      </div>`
    }
    const Goods = {
      template: `<div>
        <h3>商品管理区域</h3>
      </div>`
    }
    const Orders = {
      template: `<div>
        <h3>订单管理区域</h3>
      </div>`
    }
    const Settings = {
      template: `<div>
        <h3>系统设置区域</h3>
      </div>`
    }

    // 创建路由对象
    const router = new VueRouter({
      routes: [{
        path: '/',
        component: App,
        redirect: '/users',
        children: [{
          path: '/users',
          component: Users
        }, {
          path: '/userinfo/:id',
          component: UserInfo,
          props: true
        }, {
          path: '/rights',
          component: Rights
        }, {
          path: '/goods',
          component: Goods
        }, {
          path: '/orders',
          component: Orders
        }, {
          path: '/settings',
          component: Settings
        }]
      }]
    });
    // 创建vue实例对象
    const vm = new Vue({
      el: '#app',
      router
    })
  </script>
</body>

</html>
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

落花流雨

你的鼓励将是我创作的动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值