vue学习之Vue-Router用法实例分析


Posted in Javascript onJanuary 06, 2020

本文实例讲述了vue学习之Vue-Router用法。分享给大家供大家参考,具体如下:

Vue-router就像一个路由器,将组件(components)映射到路由(routes)后,通过点击<router-link>它可以在<router-view>中将相应的组件渲染出来。

1、使用vue-router的步骤

//1、创建路由组件
  const Link1={template:'#link1'};
  const Link2={template:'#link2'};
  const Link3={template:'#link3'};
  //2、定义路由映射
  const routes=[
    {
      path:'/link1',       //定义相对路径
      component:Link1,      //定义页面的组件
      children:[
        {
          path:'intro',      //子路由/link1/intro
          component:{template:'#ariesIntro'},
          name:'ariesIntro',    //为路由命名
        },
        {
          path:'feature',
          component:{template:'#ariesFeature'},
        },
        {path:'/',redirect:'intro'}
      ]
    },
    {path:'/link2',component:Link2},
    {path:'/link3',component:Link3},
    {path:'/',redirect:'/link1'}        //配置根路由,使其重定向到/link1
  ];
  //3、创建router实例
  const router = new VueRouter({
    routes                   //缩写,相当于 routes: routes
  });
  // 4、 创建和挂载根实例。
  const app = new Vue({
    router
  }).$mount('#app');              //挂载到id为app的div

注意:要设置根路由,页面加载完成后默认显示根路由,否则将什么也不显示。

在页面中调用路由接口,<router-link> 默认会被渲染成一个 `<a>` 标签,点击后在<router-view>渲染指定模板

<div class="col-lg-offset-2 col-lg-2">
    <!-- 使用 router-link 组件来导航. -->
    <!-- 通过传入 `to` 属性指定链接. -->
    <router-link class="list-group-item" :to="{name:'ariesIntro'}">白羊座</router-link>
    <router-link class="list-group-item" to="/link2">处女座</router-link>
    <router-link class="list-group-item" to="/link3">金牛座</router-link>
  </div>
  <div class="col-lg-6">
    <div class="panel">
      <div class="panel-body">
        <!-- 路由出口,路由匹配到的组件将渲染在这里 -->
        <router-view></router-view>
      </div>
    </div>
  </div>

2、嵌套路由

通过每个路由内的children数组属性可以为每个路由再配置子路由,子路由的路径是基于父路由目录下的,默认路径会进行叠加。例如上面再link1中添加intro与feature两个子路由,在link1模板中使用两个子路由:

<template id="link1">
    <div>
      <h3>白羊座</h3>
      <ul class="nav nav-tabs">
        <li class="active">
          <router-link to="/link1/intro">简介</router-link>
        </li>
        <li><router-link to="/link1/feature">特点</router-link></li>
      </ul>
      <div class="tab-content">
        <router-view></router-view>
      </div>
    </div>
  </template>

最终效果如图:

vue学习之Vue-Router用法实例分析

3、动态路由

在路由路径中绑定变量,使其根据不同的变量值跳转到不同页面,例如将path:"goods/:goodsId",假如当goodsId为15时,就会路由到/goods/15页面。

4、编程路由

通过js代码控制路由页面的跳转与传值。例如给button绑定事件jump,在methods内实现:

jump(){
  this.$router.push('/cart?goodsId=123')
}

页面跳转到根下的cart目录,并且传递参数goodsId,值为123。在cart页面通过$route.query接收参数,直接在页面内使用:

注意:区分跳转是$router,接收参数是$route

<span>商品ID:{{$route.query.goodsId}}</span>

也可以指定页面向前向后跳转:this.$router.go(2),向前跳转两步 ,向后跳转一步go(-1)。

5、命名路由

当路由路径过长时,也可以用name属性为路径命名,在<router-link>中使用动态绑定:to="{name:'路径名'}"访问。例如白羊座的链接上使用 :to="{name:'ariesIntro'}",可直接跳转到link1下的Intro页面。

还可以对视图进行命名,将组件渲染到指定视图位置,例如在父组件中有一个默认视图与两个命名视图一左一右:  

<router-view></router-view>
<router-view class="left" name="cartview"></router-view>
<router-view class="right" name="imgview"></router-view>

在根路由中设置其组件components,将默认视图渲染为GoodsList,左边cartview视图渲染为Cart组件,右边imgview渲染为Image组件:

new Router({
 routes: [
  {
   path: '/',
   components:{
    default:GoodsList,
    cartview:Cart,
    imgview:Image
   }
}

结果如下:

vue学习之Vue-Router用法实例分析

希望本文所述对大家vue.js程序设计有所帮助。

Javascript 相关文章推荐
js实现的真正的iframe高度自适应(兼容IE,FF,Opera)
Mar 07 Javascript
js控制的遮罩层实例介绍
May 29 Javascript
IE下双击checkbox反应延迟问题的解决方法
Mar 27 Javascript
jQuery文件上传插件Uploadify使用指南
Jun 05 Javascript
Javascript闭包用法实例分析
Jan 23 Javascript
JS实现仿FLASH效果的竖排导航代码
Sep 15 Javascript
javascript每日必学之运算符
Feb 16 Javascript
关于JavaScript 原型链的一点个人理解
Jul 31 Javascript
JS冒泡事件与事件捕获实例详解
Nov 25 Javascript
jQuery zTree树插件简单使用教程
Jan 10 Javascript
vue.js中使用微信扫一扫解决invalid signature问题(完美解决)
Apr 11 Javascript
JavaScript代码实现微博批量取消关注功能
Feb 05 Javascript
借助云开发实现小程序短信验证码的发送
Jan 06 #Javascript
React学习之受控组件与数据共享实例分析
Jan 06 #Javascript
Node.js创建一个Express服务的方法详解
Jan 06 #Javascript
JS正则表达式验证端口范围(0-65535)
Jan 06 #Javascript
基于jQuery实现挂号平台首页源码
Jan 06 #jQuery
JS实现音乐导航特效
Jan 06 #Javascript
使用vue实现一个电子签名组件的示例代码
Jan 06 #Javascript
You might like
配置php.ini实现PHP文件上传功能
2014/11/27 PHP
盘点PHP和ASP.NET的10大对比!
2015/12/24 PHP
在 Laravel 项目中使用 webpack-encore的方法
2019/07/21 PHP
php函数式编程简单示例
2019/08/08 PHP
Javascript 布尔型分析
2008/12/22 Javascript
基于Unit PNG Fix.js有时候在ie6下不正常的解决办法
2013/06/26 Javascript
javascript简单事件处理和with用法介绍
2013/09/16 Javascript
ie中js创建checkbox默认选中问题探讨
2013/10/21 Javascript
JavaScript中的比较操作符&gt;、=、
2014/12/31 Javascript
jQuery实现防止提交按钮被双击的方法
2015/03/24 Javascript
js判断上传文件后缀名是否合法
2016/01/28 Javascript
js判断登陆用户名及密码是否为空的简单实例
2016/05/16 Javascript
jQuery实现左侧导航模块的显示与隐藏效果
2016/07/04 Javascript
JS中通过url动态获取图片大小的方法小结(两种方法)
2018/10/31 Javascript
angular4笔记系列之内置指令小结
2018/11/09 Javascript
vue.js仿hover效果的实现方法示例
2019/01/28 Javascript
详解JS预解析原理
2020/06/16 Javascript
Python中time模块和datetime模块的用法示例
2016/02/28 Python
pygame游戏之旅 计算游戏中躲过的障碍数量
2018/11/20 Python
python中count函数简单用法
2020/01/05 Python
给ubuntu18安装python3.7的详细教程
2020/06/08 Python
python正则表达式 匹配反斜杠的操作方法
2020/08/07 Python
Pandas DataFrame求差集的示例代码
2020/12/13 Python
python 检测nginx服务邮件报警的脚本
2020/12/31 Python
TensorFlow低版本代码自动升级为1.0版本
2021/02/20 Python
Bibloo匈牙利:女装、男装、童装及鞋子和配饰
2019/04/14 全球购物
惠而浦美国官网:Whirlpool.com
2021/01/19 全球购物
内科护士节演讲稿
2014/09/11 职场文书
师德自我剖析材料范文
2014/10/06 职场文书
校友回访母校寄语
2015/02/26 职场文书
工作时间证明
2015/06/15 职场文书
公司业务员管理制度
2015/08/05 职场文书
党性修养心得体会2016
2016/01/21 职场文书
MySQL优化之如何写出高质量sql语句
2021/05/17 MySQL
SpringBoot集成Redis,并自定义对象序列化操作
2021/06/22 Java/Android
OpenFeign实现远程调用
2022/08/14 Java/Android