详解vue路由篇(动态路由、路由嵌套)


Posted in Javascript onJanuary 27, 2019

什么是路由?网络原理中,路由指的是根据上一接口的数据包中的IP地址,查询路由表转发到另一个接口,它决定的是一个端到端的网络路径。

web中,路由的概念也是类似,根据URL来将请求分配到指定的一个'端'。(即根据网址找到能处理这个URL的程序或模块)
使用vue.js构建项目,vue.js本身就可以通过组合组件来组成应用程序;当引入vue-router后,我们需要处理的是将组件(components)映射到路由(routes),然后在需要的地方进行使用渲染。

一、基础路由

1、创建vue项目,执行vue init webpack projectName命令,默认安装vue-router。项目创建后,在主组件App.vue中的HTML部分:

<template>
 <div id="app">
  <router-view/>
 </div>
</template>

上述代码中,<router-view/>是路由出口,路由匹配到的组件将渲染在这里。

2、文件router/index.js中:

import Vue from 'vue' // 导入vue插件
import Router from 'vue-router' // 导入vue-router
import HelloWorld from '@/components/HelloWorld' // 导入HelloWorld组件

Vue.use(Router) // 引入vue-router
export default new Router({
 routes: [
  {
   path: '/', // 匹配路由的根路径
   name: 'HelloWorld',
   component: HelloWorld
  }
 ]
})

以上代码比较简单,一般的导入、引用操作,其中Vue.use()具体什么作用?

个人理解:Vue.use(plugin, arguments)就是执行一个plugin函数,或执行plugin的install方法进行插件注册(如果plugin是一个函数,则执行;若是一个插件,则执行plugin的install方法...);并向plugin或其install方法传入Vue对象作为第一个参数;如果有多个参数,use的其它参数作为plugin或install的其它参数。(具体需要分析源码,在此不再过多解释)

二、动态路由

什么是动态路由?动态路由是指路由器能够自动的建立自己的路由表,并且能够根据实际情况的变化实时地进行调整。

1、在vue项目中,使用vue-router如果进行不传递参数的路由模式,则称为静态路由;如果能够传递参数,对应的路由数量是不确定的,此时的路由称为动态路由。动态路由,是以冒号为开头的(:),例子如下:

export default new Router({
 routes: [
  {
   path: '/',
   name: 'HelloWorld',
   component: HelloWorld
  }, {
   path: '/RouterComponents/:id',
   name: 'RouterComponents',
   component: RouterComponents
  }
 ]
})

2、路由跳转,执行方式有两大类;

第一大类:router-link模式,直接把参数写在to属性里面:

<router-link :to="{name:'RouterComponents',params:{id:110}}">跳转</router-link>

第二大类:$router.push()模式,代码如下:

methods: {
  changeFuc (val) {
   this.$router.push({
    name: 'RouterComponents',
    params: {id: val}
   })
  }
}

或者:

methods: {
  changeFuc (val) {
   this.$router.push({
    path: `/RouterComponents/${val}`,
   })
  }
}

三、嵌套路由

vue项目中,界面通常由多个嵌套的组件构成;同理,URL中的动态路由也可以按照某种结构对应嵌套的各层组件:

export default new Router({
 routes: [
  {
   path: '/', // 根路由
   name: 'HelloWorld',
   component: HelloWorld
  }, {
   path: '/RouterComponents/:id',
   component: RouterComponents,
   children: [
    {
     path: '', // 默认路由
     name: 'ComponentA', // 当匹配上RouterComponents后,默认展示在<router-view>中
     component: ComponentA
    },
    {
     path: '/ComponentB',
     name: 'ComponentB',
     component: ComponentB
    },
   ]
  }
 ]
})

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
IE与FireFox的兼容性问题分析
Apr 22 Javascript
javascript 基础篇2 数据类型,语句,函数
Mar 14 Javascript
js时间比较示例分享(日期比较)
Mar 05 Javascript
JS随机洗牌算法之数组随机排序
Mar 23 Javascript
jquery自定义插件开发之window的实现过程
May 06 Javascript
Javascript之Math对象详解
Jun 07 Javascript
jQuery插件HighCharts实现的2D对数饼图效果示例【附demo源码下载】
Mar 09 Javascript
JS实现队列的先进先出功能示例
May 10 Javascript
简述vue中的config配置
Jan 23 Javascript
JavaScript的Proxy可以做哪些有意思的事儿
Jun 15 Javascript
小程序如何支持使用 async/await详解
Sep 12 Javascript
es6函数之rest参数用法实例分析
Apr 18 Javascript
实例讲解JS中pop使用方法
Jan 27 #Javascript
Vue.js实现的购物车功能详解
Jan 27 #Javascript
JS温故而知新之变量提升和时间死区
Jan 27 #Javascript
vue组件文档(.md)中如何自动导入示例(.vue)详解
Jan 25 #Javascript
命令行批量截图Node脚本示例代码
Jan 25 #Javascript
Node.js 进程平滑离场剖析小结
Jan 24 #Javascript
Vue.js样式动态绑定实现小结
Jan 24 #Javascript
You might like
PHILIPS AE3805收音机的分析打磨
2021/03/02 无线电
phpmyadmin中禁止外网使用的方法
2014/11/04 PHP
php实现中文字符截取防乱码方法汇总
2015/04/29 PHP
laravel框架路由分组,中间件,命名空间,子域名,路由前缀实例分析
2020/02/18 PHP
javascript 二分法(数组array)
2010/04/24 Javascript
在父页面调用子页面的JS方法
2013/09/29 Javascript
jquery ajax修改全局变量示例代码
2013/11/08 Javascript
在每个匹配元素的外部插入新元素的方法
2013/12/20 Javascript
解析jQuery的三种bind/One/Live事件绑定使用方法
2013/12/30 Javascript
纯css+js写的一个简单的tab标签页带样式
2014/01/28 Javascript
javascript实现简单的二级联动
2015/03/19 Javascript
JavaScript中的call方法和apply方法使用对比
2015/08/12 Javascript
浅谈node.js中async异步编程
2015/10/22 Javascript
jqGrid中文文档之选项设置
2015/12/02 Javascript
javascript显示上周、上个月日期的处理方法
2016/02/03 Javascript
Listloading.js移动端上拉下拉刷新组件
2016/08/04 Javascript
JavaScript兼容浏览器FF/IE技巧
2016/08/14 Javascript
基于Swiper实现移动端页面图片轮播效果
2017/12/28 Javascript
vue脚手架搭建过程图解
2018/06/06 Javascript
Postman的下载及安装教程详解
2018/10/16 Javascript
分享5个小技巧让你写出更好的 JavaScript 条件语句
2018/10/20 Javascript
详解vue-cli 脚手架 安装
2019/04/16 Javascript
vue中echarts引入中国地图的案例
2020/07/28 Javascript
在Python中使用base64模块处理字符编码的教程
2015/04/28 Python
用Python和WordCloud绘制词云的实现方法(内附让字体清晰的秘笈)
2019/01/08 Python
pytorch 多分类问题,计算百分比操作
2020/07/09 Python
如何用Python 实现全连接神经网络(Multi-layer Perceptron)
2020/10/15 Python
Skyscanner澳大利亚:全球领先的旅游搜索网站
2018/03/24 全球购物
墨西哥购物网站:Elektra
2020/01/21 全球购物
生产车间主管岗位职责
2013/12/28 职场文书
2014年度党员自我评议
2014/09/13 职场文书
乡镇干部个人整改措施思想汇报
2014/10/10 职场文书
2015年征兵工作总结
2015/07/23 职场文书
css常用字体属性与背景属性介绍
2022/02/28 HTML / CSS
vue如何使用模拟的json数据查看效果
2022/03/31 Vue.js
HTML静态页面获取url参数和UserAgent的实现
2022/08/05 HTML / CSS