4. router

4.1. router 基本使用

router是完成前端路由的。基本使用如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home'
import About from '@/components/About'

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      redirect: "/home"
    },
    {
      path: '/home',
      name: 'home',
      component: Home
    },
    {
      path: '/about',
      name: 'about',
      component: About
    }
  ],
  mode: 'history'
})

4.2. 完成跳转

可以在组件内的一些方法中完成一些调整。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<template>
  <div id="app">

    <router-link to="/home" tag="button"  >home</router-link>
    <router-link to="/about" tag="button"  >about</router-link>
    <button @click="aboutClick">about2</button>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'App',
  methods:{
    aboutClick(){
      this.$router.push("/about")
     // history.pushState("about")
    },
  }
}
</script>

<style>
.router-link-active{
  color: red;
}
</style>

4.3. 动态路由

router是完成前端路由的。基本使用如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
import Vue from 'vue'
import Router from 'vue-router'
import Home from '@/components/Home'
import About from '@/components/About'
import User from '@/components/User'
Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      redirect: "/home"
    },
    {
      path: '/home',
      name: 'home',
      component: Home
    },
    {
      path: '/about',
      name: 'about',
      component: About
    },
    // {
    //   path: '/user',
    //   name: 'user',
    //   component: User
    // },
    {
      path: '/user/:uid',
      name: 'user',
      component: User
    }
  ],
  mode: 'history'
})

4.4. 懒加载

router是完成前端路由的。基本使用如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
import Vue from 'vue'
import Router from 'vue-router'
// import Home from '@/components/Home'
// import About from '@/components/About'


const Home = () => import ('@/components/Home')
const About = () => import ('@/components/About')

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '/',
      redirect: "/home"
    },
    {
      path: '/home',
      name: 'home',
      component: Home
    },
    {
      path: '/about',
      name: 'about',
      component: About
    }
  ],
  mode: 'history'
})

4.5. 嵌套路由

router是完成前端路由的。基本使用如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
import Vue from 'vue'
import Router from 'vue-router'
// import Home from '@/components/Home'
// import About from '@/components/About'

const Home = () => import ('@/components/Home')
const About = () => import ('@/components/About')

const HomeNews = () => import ('@/components/HomeNews')
const HomeMessages = () => import ('@/components/HomeMessages')

Vue.use(Router)

export default new Router({
  routes: [
    {
      path: '',
      redirect: "/home",

    },
    {
      path: '/home',
      name: 'home',
      component: Home,
      children:[
        {
          path: '',
          redirect: "news",
        },
        {
          path: 'news',
          component: HomeNews
        },
        {
          path: 'messages',
          component: HomeMessages
        }
      ],
    },
    {
      path: '/about',
      name: 'about',
      component: About
    }
  ],
  mode: 'history'
})

4.6. 参数传递

router是完成前端路由的。基本使用如下。

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
<template>
<div>
  <h2>我是Profile</h2>
  <p>我是Profile内容</p>
  <p>第一种方式获取传递过来的uid为: {{Uid}}</p>
  <p>第二种方式获取传递过来的uid为: {{Uid2}}</p>

</div>
</template>

<script>
export default {
name: "Profile",
  computed:{
    Uid(){
      return this.$route.params.uid
    },
    Uid2(){
      return this.$route.query.uid
    }
  }
}
</script>

<style scoped>

</style>
 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
<template>
  <div id="app">

    <router-link to="/home">home</router-link>
    <router-link to="/about">about</router-link>
    <router-link :to="UidUri">user</router-link>
    <router-link :to="{path: '/profile', query:{uid: 'panda2'}}">Profile</router-link>
    <router-view></router-view>
  </div>
</template>

<script>
export default {
  name: 'App',
  data() {
    return {
      uid: 'panda'
    }
  },
  computed: {
    UidUri() {
      return "/user/" + this.uid

    }
  }
}
</script>

<style>

</style>