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 相关文章推荐
使用prototype.js进行异步操作
Feb 07 Javascript
javascript算法题 求任意一个1-9位不重复的N位数在该组合中的大小排列序号
Jul 21 Javascript
Js使用WScript.Shell对象执行.bat文件和cmd命令
Dec 18 Javascript
纯javascript实现简单下拉刷新功能
Mar 13 Javascript
jQuery实现的鼠标滑过弹出放大图片特效
Jan 08 Javascript
js事件驱动机制 浏览器兼容处理方法
Jul 23 Javascript
jQuery实现弹出窗口弹出div层的实例代码
Jan 09 Javascript
微信小程序 侧滑删除(左滑删除)
May 23 Javascript
js定时器实现倒计时效果
Nov 05 Javascript
用ES6的class模仿Vue写一个双向绑定的示例代码
Apr 20 Javascript
webstorm添加*.vue文件支持
May 08 Javascript
Vite和Vue CLI的优劣
Jan 30 Vue.js
借助云开发实现小程序短信验证码的发送
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
星际原理概述
2020/03/04 星际争霸
php调用方法mssql_fetch_row、mssql_fetch_array、mssql_fetch_assoc和mssql_fetch_objcect读取数据的区别
2012/08/08 PHP
PHP json格式和js json格式 js跨域调用实现代码
2012/09/08 PHP
关于二级目录拖拽排序的实现(源码示例下载)
2013/04/26 PHP
ThinkPHP 3.2 版本升级了哪些内容
2015/03/05 PHP
PHP PDOStatement::rowCount讲解
2019/02/01 PHP
JSON扫盲帖 JSON.as类教程
2009/02/16 Javascript
JavaScript获取GridView选择的行内容
2009/04/14 Javascript
js中top、clientTop、scrollTop、offsetTop的区别 文字详细说明版
2011/01/08 Javascript
js 页面关闭前的出现提示的实现代码
2011/05/25 Javascript
IE下JS读取xml文件示例代码
2013/08/05 Javascript
php析构函数的具体用法小结
2014/03/11 Javascript
一个简单的jquery的多选下拉框(自写)
2014/05/05 Javascript
用js闭包的方法实现多点标注冒泡示例
2014/05/29 Javascript
jQuery simplePage+AJAX plus分页插件用法实例
2016/02/17 Javascript
angularjs 源码解析之scope
2016/08/22 Javascript
JS调用打印机功能简单示例
2016/11/28 Javascript
layui弹出层效果实现代码
2017/05/19 Javascript
微信小程序实现手指触摸画板
2018/07/09 Javascript
vue+Element-ui实现分页效果实例代码详解
2018/12/10 Javascript
使用layui实现树形结构的方法
2019/09/20 Javascript
vue 页面回退mounted函数不执行的解决方案
2020/07/26 Javascript
[43:43]完美世界DOTA2联赛PWL S2 FTD.C vs Rebirth 第一场 11.22
2020/11/24 DOTA
python获得图片base64编码示例
2014/01/16 Python
利用Python的Twisted框架实现webshell密码扫描器的教程
2015/04/16 Python
Python中str.join()简单用法示例
2018/03/20 Python
500行代码使用python写个微信小游戏飞机大战游戏
2019/10/16 Python
创建Shapefile文件并写入数据的例子
2019/11/26 Python
基于python判断字符串括号是否闭合{}[]()
2020/09/21 Python
金融专业个人求职信
2013/09/22 职场文书
计算机求职信
2013/12/01 职场文书
销售员试用期自我评价
2014/09/15 职场文书
教师自我剖析材料
2014/09/29 职场文书
2014超市收银员工作总结
2014/11/13 职场文书
普宁寺导游词
2015/02/04 职场文书
如何通过cmd 连接阿里云服务器
2022/04/18 Servers