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 相关文章推荐
jquery 获取json数据实现代码
Apr 27 Javascript
jquery之empty()与remove()区别说明
Sep 10 Javascript
javascript中typeof的使用示例
Dec 19 Javascript
JavaScript 不支持 indexof 该如何解决
Mar 30 Javascript
探讨跨域请求资源的几种方式(总结)
Dec 02 Javascript
JS实战篇之收缩菜单表单布局
Dec 10 Javascript
bootstrap jquery dataTable 异步ajax刷新表格数据的实现方法
Feb 10 Javascript
Vue中组件之间数据的传递的示例代码
Sep 08 Javascript
详解Webpack多环境代码打包的方法
Aug 03 Javascript
JavaScript常用事件介绍
Jan 21 Javascript
Vue.js中该如何自己维护路由跳转记录
May 19 Javascript
高性能js数组去重(12种方法,史上最全)
Dec 21 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的String类代码
2010/04/20 PHP
php 归并排序 数组交集
2011/05/10 PHP
php中把美国时间转为北京时间的自定义函数分享
2014/07/28 PHP
纯php生成随机密码
2015/10/30 PHP
php一个文件搞定微信jssdk配置
2016/12/12 PHP
Laravel实现搜索的时候分页并携带参数
2019/10/15 PHP
用js实现预览待上传的本地图片
2007/03/15 Javascript
JavaScript 操作键盘的Enter事件(键盘任何事件),兼容多浏览器
2010/10/11 Javascript
JavaScript字符串对象split方法入门实例(用于把字符串分割成数组)
2014/10/16 Javascript
JS 实现列表与多选框选择附预览动画
2014/10/29 Javascript
jQuery实现“扫码阅读”功能
2015/01/21 Javascript
浅谈Sticky组件的改进实现
2016/03/22 Javascript
微信小程序开发之大转盘 仿天猫超市抽奖实例
2016/12/08 Javascript
vue-cli如何快速构建vue项目
2017/04/26 Javascript
利用JS测试目标网站的打开响应速度
2017/12/01 Javascript
React如何避免重渲染
2018/04/10 Javascript
JS实现移动端点击按钮复制文本内容
2019/07/28 Javascript
详解react组件通讯方式(多种)
2020/05/06 Javascript
Vue数据双向绑定原理实例解析
2020/05/15 Javascript
jQuery实现二级导航菜单的示例
2020/09/30 jQuery
jQuery实现鼠标拖动图片功能
2021/03/04 jQuery
[01:41]DOTA2 2015国际邀请赛中国区预选赛第三日战报
2015/05/28 DOTA
Python使用tkinter模块实现推箱子游戏
2019/10/08 Python
使用python的turtle绘画滑稽脸实例
2019/11/21 Python
Python各种扩展名区别点整理
2020/02/27 Python
Fanatics法国官网:美国体育电商
2019/08/27 全球购物
中学生学雷锋演讲稿
2014/04/26 职场文书
个人贷款授权委托书样本
2014/10/07 职场文书
小学老师对学生的评语
2014/12/29 职场文书
贷款承诺书
2015/01/20 职场文书
股份转让协议书范本
2015/01/27 职场文书
投资意向协议书
2015/01/29 职场文书
2015年保送生自荐信
2015/03/24 职场文书
2015年学校财务工作总结
2015/05/19 职场文书
实施意见格式范本
2015/06/05 职场文书
职业生涯规划书之大学四年
2019/08/07 职场文书