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 相关文章推荐
说说掌握JavaScript语言的思想前提想学习js的朋友可以看看
Apr 01 Javascript
自写简单JS判断是否已经弹出页面
Oct 20 Javascript
js/jQuery对象互转(快速操作dom元素)
Feb 04 Javascript
Jquery实现遮罩层的方法
Jun 08 Javascript
jQuery+css3实现转动的正方形效果(附demo源码下载)
Jan 27 Javascript
EXT中单击button按钮grid添加一行(光标位置可设置)的实例代码
Jun 02 Javascript
一种基于浏览器的自动小票机打印实现方案(js版)
Jul 26 Javascript
详解Vue前端对axios的封装和使用
Apr 01 Javascript
浅入深出Vue之自动化路由
Aug 06 Javascript
JS实现滑动导航效果
Jan 14 Javascript
WEB前端性能优化的7大手段详解
Feb 04 Javascript
详解如何在Javascript中使用Object.freeze()
Oct 18 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
桌面中心(三)修改数据库
2006/10/09 PHP
php实现的百度搜索某地天气的小偷代码
2014/04/23 PHP
Yii中创建自己的Widget实例
2016/01/05 PHP
php微信公众号开发(3)php实现简单微信文本通讯
2016/12/15 PHP
javascript放大镜效果的简单实现
2013/12/09 Javascript
JS onmousemove鼠标移动坐标接龙DIV效果实例
2013/12/16 Javascript
js判断当页面无法回退时关闭网页否则就history.go(-1)
2014/08/07 Javascript
使用Angular.js开发的注意事项
2016/10/19 Javascript
Vue如何实现组件的源码解析
2017/06/08 Javascript
Vue动画事件详解及过渡动画实例
2019/02/09 Javascript
Vue项目中如何使用Axios封装http请求详解
2019/10/23 Javascript
vue全局使用axios的操作
2020/09/08 Javascript
antd的select下拉框因为数据量太大造成卡顿的解决方式
2020/10/31 Javascript
vue实现动态表格提交参数动态生成控件的操作
2020/11/09 Javascript
[07:03]显微镜下的DOTA2第九期——430圣堂刺客杀戮秀
2014/06/20 DOTA
使用Python的Tornado框架实现一个简单的WebQQ机器人
2015/04/24 Python
python开发之str.format()用法实例分析
2016/02/22 Python
全面了解Python的getattr(),setattr(),delattr(),hasattr()
2016/06/14 Python
不要用强制方法杀掉python线程
2017/02/26 Python
Pandas 数据框增、删、改、查、去重、抽样基本操作方法
2018/04/12 Python
一篇文章读懂Python赋值与拷贝
2018/04/19 Python
python判断一个集合是否为另一个集合的子集方法
2018/05/04 Python
Python3爬取英雄联盟英雄皮肤大图实例代码
2018/11/14 Python
详解Python3之数据指纹MD5校验与对比
2019/06/11 Python
django 信号调度机制详解
2019/07/19 Python
Python实现微信翻译机器人的方法
2019/08/13 Python
初次部署django+gunicorn+nginx的方法步骤
2019/09/11 Python
python 利用jinja2模板生成html代码实例
2019/10/10 Python
AUC计算方法与Python实现代码
2020/02/28 Python
Gap工厂店:Gap Factory
2017/11/02 全球购物
《小动物过冬》教学反思
2014/04/17 职场文书
职工小家建设活动方案
2014/08/25 职场文书
企业计划生育责任书
2015/05/09 职场文书
2015年教师节新闻稿
2015/07/17 职场文书
Python使用OpenCV和K-Means聚类对毕业照进行图像分割
2021/06/11 Python
Android Studio实现带三角函数对数运算功能的高级计算器
2022/05/20 Java/Android