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 相关文章推荐
extjs之去除s.gif的影响
Dec 25 Javascript
asp.net中System.Timers.Timer的使用方法
Mar 20 Javascript
ExtJS下书写动态生成的xml(兼容火狐)
Apr 02 Javascript
Firefox和IE兼容性问题及解决方法总结
Oct 08 Javascript
raphael.js绘制中国地图 地图绘制方法
Feb 12 Javascript
javascript生成随机大小写字母的方法
Feb 20 Javascript
使用js实现数据格式化
Dec 03 Javascript
JavaScript学习笔记之取数组中最大值和最小值
Mar 23 Javascript
Vue自定义指令使用方法详解
Aug 21 Javascript
微信小程序实现轮播图效果
Sep 07 Javascript
微信小程序项目实践之九宫格实现及item跳转功能
Jul 19 Javascript
vue实现百度语音合成的实例讲解
Oct 14 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实现ip白名单黑名单功能
2015/03/12 PHP
支付宝接口开发集成支付环境小结
2015/03/17 PHP
TP3.2批量上传文件或图片 同名冲突问题的解决方法
2017/08/01 PHP
PHP fopen中文文件名乱码问题解决方案
2020/10/28 PHP
主页面中的两个iframe实现鼠标拖动改变其大小
2013/04/16 Javascript
JavaScript的常见兼容问题及相关解决方法(chrome/IE/firefox)
2013/12/31 Javascript
JavaScript获取图片的原始尺寸以宽度为例
2014/05/04 Javascript
node.js中的fs.realpathSync方法使用说明
2014/12/16 Javascript
JS实现动态给图片添加边框的方法
2015/04/01 Javascript
使用EVAL处理jqchart jquery 折线图返回数据无效的解决办法
2015/11/26 Javascript
详解AngularJS之$window窗口对象
2018/01/17 Javascript
使用 vue-i18n 切换中英文效果
2018/05/23 Javascript
vue 点击按钮实现动态挂载子组件的方法
2018/09/07 Javascript
微信小程序后台持续定位功能使用详解
2019/08/23 Javascript
在react项目中使用antd的form组件,动态设置input框的值
2020/10/24 Javascript
[40:53]完美世界DOTA2联赛PWL S3 Magma vs DLG 第二场 12.18
2020/12/20 DOTA
[46:20]DOTA2-DPC中国联赛 正赛 PSG.LGD vs LBZS BO3 第二场 1月22日
2021/03/11 DOTA
Python中zfill()方法的使用教程
2015/05/20 Python
详解Python多线程
2016/11/14 Python
Python学习笔记之if语句的使用示例
2017/10/23 Python
django 开发忘记密码通过邮箱找回功能示例
2018/04/17 Python
python实现自主查询实时天气
2018/06/22 Python
在Mac上删除自己安装的Python方法
2018/10/29 Python
python使用插值法画出平滑曲线
2018/12/15 Python
Python 运行 shell 获取输出结果的实例
2019/01/07 Python
django项目中使用手机号登录的实例代码
2019/08/15 Python
jupyter修改文件名方式(TensorFlow)
2020/04/21 Python
keras自动编码器实现系列之卷积自动编码器操作
2020/07/03 Python
python 30行代码实现蚂蚁森林自动偷能量
2021/02/08 Python
Html5应用程序缓存(Cache manifest)
2018/06/04 HTML / CSS
乌克兰网上服装店:Bolf.ua
2018/10/30 全球购物
推荐信怎么写
2014/05/09 职场文书
2014迎国庆标语大全
2014/09/19 职场文书
2015年度个人教学工作总结
2015/05/20 职场文书
讲座开场白台词和结束语
2015/05/29 职场文书
微信小程序scroll-view不能左右滑动问题的解决方法
2021/07/09 Javascript