0
点赞
收藏
分享

微信扫一扫

10天从入门到精通Vue(四)Vue中的路由指南

@[toc]

什么是路由

  1. 后端路由:对于普通的网站,所有的超链接都是URL地址,所有的URL地址都对应服务器上对应的资源;
  2. 前端路由:对于单页面应用程序来说,主要通过URL中的hash(#号)来实现不同页面之间的切换,同时,hash有一个特点:HTTP请求中不会包含hash相关的内容;所以,单页面程序中的页面跳转主要用hash实现;
  3. 在单页面应用程序中,这种通过hash改变来切换页面的方式,称作前端路由(区别于后端路由);

    在 vue 中使用 vue-router

  4. 导入 vue-router 组件类库:

    <!-- 1. 导入 vue-router 组件类库 -->
    <script src="../lib/vue-router-2.7.0.js"></script>
  5. 使用 router-link 组件来导航

    <!-- 2. 使用 router-link 组件来导航 -->
    <router-link to="/login">登录</router-link>
    <router-link to="/register">注册</router-link>
  6. 使用 router-view 组件来显示匹配到的组件

    <!-- 3. 使用 router-view 组件来显示匹配到的组件 -->
    <router-view></router-view>
  7. 创建使用Vue.extend创建组件
    
    // 4.1 使用 Vue.extend 来创建登录组件
    var login = Vue.extend({
    template: '登录组件'
    });

// 4.2 使用 Vue.extend 来创建注册组件
var register = Vue.extend({
template: '注册组件'
});


5. 创建一个路由 router 实例,通过 routers 属性来定义路由匹配规则
```vue
// 5. 创建一个路由 router 实例,通过 routers 属性来定义路由匹配规则
var router = new VueRouter({
routes: [
{ path: '/login', component: login },
{ path: '/register', component: register }
]
    });
  1. 使用 router 属性来使用路由规则

    // 6. 创建 Vue 实例,得到 ViewModel
    var vm = new Vue({
    el: '#app',
    router: router // 使用 router 属性来使用路由规则
    });

    使用tag属性指定router-link渲染的标签类型

    <!-- router-link 默认渲染为一个a 标签 -->
    <router-link to="/login" tag="span">登录</router-link>
    <router-link to="/register">注册</router-link>

    设置路由重定向

    routes: [ // 路由匹配规则 
        // 每个路由规则,都是一个对象,这个规则对象,身上,有两个必须的属性:
        //  属性1 是 path, 表示监听 哪个路由链接地址;
        //  属性2 是 component, 表示,如果 路由是前面匹配到的 path ,则展示 component 属性对应的那个组件
        // 注意: component 的属性值,必须是一个 组件的模板对象, 不能是 组件的引用名称;
        // { path: '/', component: login },
        { path: '/', redirect: '/login' }, // 这里的 redirect 和 Node 中的 redirect 完全是两码事
        { path: '/login', component: login },
        { path: '/register', component: register }
      ],

    设置路由高亮

    .router-link-active,
    .myactive {
      color: red;
      font-weight: 800;
      font-style: italic;
      font-size: 80px;
      text-decoration: underline;
      background-color: green;
    }

    设置路由切换动效

    .v-enter,
    .v-leave-to {
      opacity: 0;
      transform: translateX(140px);
    }
    
    .v-enter-active,
    .v-leave-active {
      transition: all 0.5s ease;
    }

    在路由规则中定义参数

  2. 在规则中定义参数:

    { path: '/register/:id', component: register }
  3. 通过 this.$route.params来获取路由中的参数:

    var register = Vue.extend({
      template: '注册组件 --- {{this.$route.params.id}}'
    });

    使用 children 属性实现路由嵌套

    
    <div id="app">
    <router-link to="/account">Account</router-link>
    
    <router-view></router-view>
    </div>

<script>
// 父路由中的组件
const account = Vue.extend({
template: &lt;div&gt;<br/>这是account组件<br/>&lt;router-link to="/account/login"&gt;login&lt;/router-link&gt; | <br/>&lt;router-link to="/account/register"&gt;register&lt;/router-link&gt;<br/>&lt;router-view&gt;&lt;/router-view&gt;<br/>&lt;/div&gt;
});

// 子路由中的 login 组件
const login = Vue.extend({
template: '<div>登录组件</div>'
});

// 子路由中的 register 组件
const register = Vue.extend({
template: '<div>注册组件</div>'
});

// 路由实例
var router = new VueRouter({
routes: [
{ path: '/', redirect: '/account/login' }, // 使用 redirect 实现路由重定向
{
path: '/account',
component: account,
children: [ // 通过 children 数组属性,来实现路由的嵌套
{ path: 'login', component: login }, // 注意,子路由的开头位置,不要加 / 路径符
{ path: 'register', component: register }
]
}
]
});

// 创建 Vue 实例,得到 ViewModel
var vm = new Vue({
el: '#app',
data: {},
methods: {},
components: {
account
},
router: router
});
</script>



> 本文内容到此结束了,    
> 如有收获欢迎点赞👍收藏💖关注✔️,您的鼓励是我最大的动力。 
> 如有错误❌疑问💬欢迎各位大佬指出。 
> **主页**:[共饮一杯无的博客汇总👨‍💻](https://blog.51cto.com/zhanjq)
>   
> **保持热爱,奔赴下一场山海**。🏃🏃🏃

![a37032f76d3ebe77e3e3d265ff1e1d7.jpg](https://s2.51cto.com/images/blog/202208/21131128_6301be80ebe7957597.jpg?x-oss-process=image/watermark,size_14,text_QDUxQ1RP5Y2a5a6i,color_FFFFFF,t_30,g_se,x_10,y_10,shadow_20,type_ZmFuZ3poZW5naGVpdGk=)
举报

相关推荐

Vue从入门到精通

0 条评论