Vue学习总结-路由

路由-前端路由和后端路由的概念

在这里插入图片描述

路由-vue-router的基本使用

import Vue from 'vue'
import VueResource from 'vue-resource'
import Router from 'vue-router'
import HelloWorld from '../components/HelloWorld'
import About from '../components/About'
import animated from 'animate.css' // npm install animate.css --save安装,再引入


Vue.use(Router)
Vue.use(animated)
Vue.use(VueResource)

export default new Router({
  routes: [
    {
      path: '/About',
      name: 'About',
      component: About
    },
    {
      path: '/HelloWorld',
      name: 'HelloWorld',
      component: HelloWorld
    }
  ]
})

在这里插入图片描述

在这里插入图片描述
在这里插入图片描述

路由-router-link的使用

<template>
  <div id="app">
<!--    <a href="#/About">关于</a>-->
<!--    <a href="#/HelloWorld">你好</a>-->
    <router-link to="/About" tag="span">关于</router-link>
    <router-link to="/HelloWorld">你好</router-link>
    <router-view></router-view>
  </div>
</template>

<script>

    import About from "./components/About.vue"
    import HelloWorld from "./components/HelloWorld.vue";

    export default {
        name: 'App',
        data: function () {
            return {}

        },

        methods: {}
    }
</script>

<style scoped>

</style>

路由-路由redirect重定向的使用

export default new Router({
  routes: [
    {
     path:'/',
     redirect: '/About'
    },
    {
      path: '/About',
      name: 'About',
      component: About
    },
    {
      path: '/HelloWorld',
      name: 'HelloWorld',
      component: HelloWorld
    }
  ]
})

在这里插入图片描述

在这里插入图片描述

路由-设置选中路由高亮的两种方式

方式1

在这里插入图片描述

<template>
  <div id="app">
<!--    <a href="#/About">关于</a>-->
<!--    <a href="#/HelloWorld">你好</a>-->
    <router-link to="/About" tag="span">关于</router-link>
    <router-link to="/HelloWorld">你好</router-link>
    <router-view></router-view>
  </div>
</template>

<script>

    import About from "./components/About.vue"
    import HelloWorld from "./components/HelloWorld.vue";

    export default {
        name: 'App',
        data: function () {
            return {}

        },

        methods: {}
    }
</script>

<style scoped>
.router-link-active,myActive{
  color: red;
  font-weight: 800;
  font-size: 80px;
  text-decoration: underline;
}
</style>

方式2

import Vue from 'vue'
import VueResource from 'vue-resource'
import Router from 'vue-router'
import HelloWorld from '../components/HelloWorld'
import About from '../components/About'
import animated from 'animate.css' // npm install animate.css --save安装,再引入


Vue.use(Router)
Vue.use(animated)
Vue.use(VueResource)

export default new Router({
  routes: [
    {
     path:'/',
     redirect: '/About'
    },
    {
      path: '/About',
      name: 'About',
      component: About
    },
    {
      path: '/HelloWorld',
      name: 'HelloWorld',
      component: HelloWorld
    }
  ],
  linkActiveClass:'myActive'       //方式2
})

路由-为路由切换启动动画

<template>
  <div id="app">
<!--    <a href="#/About">关于</a>-->
<!--    <a href="#/HelloWorld">你好</a>-->
    <router-link to="/About" tag="span">关于</router-link>
    <router-link to="/HelloWorld">你好</router-link>
    <transition mode="out-in"
    >
      <router-view></router-view>
    </transition>
  </div>
</template>

<script>

    import About from "./components/About.vue"
    import HelloWorld from "./components/HelloWorld.vue";

    export default {
        name: 'App',
        data: function () {
            return {}

        },

        methods: {}
    }
</script>

<style scoped>
.router-link-active,.myActive{
  color: red;
  font-weight: 800;
  font-size: 80px;
  text-decoration: underline;
}
.v-enter,
.v-leave-to{
  opacity: 0;
  transform: translateX(140px);
}
  .v-enter-active,
  .v-leave-active{
    transition: all 0.5s ease;
  }
</style>

路由传参-使用query方式传递参数

父组件

<router-link to="/HelloWorld?id=10&name='名字'">你好</router-link>

子组件

<h1>登录组件---{{$route.query.id}}---{{$route.query.name}}</h1>

效果:
在这里插入图片描述

路由传参-使用params方式传递路由参数

路由:
export default new Router({
  routes: [
    {
      path: '/About',
      name: 'About',
      component: About
    },
    {
      path: '/HelloWorld/:id/:name',
      name: 'HelloWorld',
      component: HelloWorld
    }
  ],
  linkActiveClass:'myActive'
})

父组件传参:
 <div id="app">
<!--    <a href="#/About">关于</a>-->
<!--    <a href="#/HelloWorld">你好</a>-->
<!--    如果在路由中,使用查询字符串,给路由传递参数,不需要修改路由规则的path属性-->
    <router-link to="/HelloWorld/12/'名字'">你好</router-link>
    <router-link to="/About" tag="span">关于</router-link>
    <transition mode="out-in"
    >
      <router-view></router-view>
    </transition>
  </div>

子组件使用:
<h1>登录组件---{{$route.params.id}}--{{$route.params.name}}</h1>

在这里插入图片描述

路由-使用children属性实现路由嵌套(未解决)

App.vue

<template>
  <div id="app">
<!--    <el-container>-->
<!--      <el-header>这是APP组件Header</el-header>-->
<!--      <el-main>-->
<!--            <router-link to="HelloWorld">你好</router-link>-->
<!--                <router-link to="About" tag="span">关于</router-link>-->
<!--        <router-view></router-view>-->
<!--      </el-main>-->
<!--    </el-container>-->



  </div>
</template>

<script>

    import About from "./components/About.vue"
    import HelloWorld from "./components/HelloWorld.vue";

    export default {
        name: 'App',
        data: function () {
            return {}

        },

        methods: {}
    }
</script>

<style scoped>
  .router-link-active, .myActive {
    color: red;
    font-weight: 100;
    font-size: 20px;
    text-decoration: underline;
  }
  .el-header, .el-footer {
    background-color: #B3C0D1;
    color: #333;
    text-align: center;
    line-height: 60px;
  }

  .el-main {
    background-color: #E9EEF3;
    color: #333;
    text-align: center;
    line-height: 700px;
  }

  .v-enter,
  .v-leave-to {
    opacity: 0;
    transform: translateX(140px);
  }

  .v-enter-active,
  .v-leave-active {
    transition: all 0.5s ease;
  }
</style>

index.js

import Vue from 'vue'
import VueResource from 'vue-resource'
import Router from 'vue-router'
import HelloWorld from '../components/HelloWorld'
import About from '../components/About'
import App from '../App.vue'
import animated from 'animate.css' // npm install animate.css --save安装,再引入


Vue.use(Router)
Vue.use(animated)
Vue.use(VueResource)

export default new Router({
  routes: [

    // {
    //   path: '/',
    //   name: "App",
    //   redirect: HelloWorld,
    //   component: App,
    //   children:[
    //     { path: 'HelloWorld',name: 'HelloWorld', component: HelloWorld},
    //     { path: 'About', name: 'About',component: About }
    //   ]
    // },
  ],
})

路由-使用命名视图实现经典布局

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值