详解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 相关文章推荐
js写一个弹出层并锁屏效果实现代码
Dec 07 Javascript
JavaScript用JQuery呼叫Server端方法示例代码
Sep 03 Javascript
JavaScript中文件上传API详解
Apr 01 Javascript
jsp 网站引入外部css或者js失效问题解决
Oct 31 Javascript
浅谈javascript的闭包
Jan 23 Javascript
详解vue表单验证组件 v-verify-plugin
Apr 19 Javascript
微信小程序 获取二维码实例详解
Jun 23 Javascript
Vue.js与 ASP.NET Core 服务端渲染功能整合
Nov 16 Javascript
关于axios如何全局注册浅析
Jan 14 Javascript
javascript匿名函数中的'return function()'作用
Oct 15 Javascript
JavaScript惰性求值的一种实现方法示例
Jan 11 Javascript
详解Node.JS模块 process
Aug 31 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
PHP实现采集程序原理和简单示例代码
2007/03/18 PHP
浅析Mysql 数据回滚错误的解决方法
2013/08/05 PHP
php实现图形显示Ip地址的代码及注释
2014/01/20 PHP
PHP实现的多维数组去重操作示例
2018/07/21 PHP
基于jquery实现的一个选择中国大学的弹框 (数据、步骤、代码)
2012/07/26 Javascript
js新闻滚动 js如何实现新闻滚动效果
2013/01/07 Javascript
使用JavaScript获取地址栏参数的方法
2014/12/19 Javascript
jQuery实现页面滚动时动态加载内容的方法
2015/03/20 Javascript
JavaScript 模块的循环加载实现方法
2015/12/13 Javascript
JQuery ztree 异步加载实例讲解
2016/02/25 Javascript
JSP基于Bootstrap分页显示实例解析
2016/06/12 Javascript
jQuery解析与处理服务器端返回xml格式数据的方法详解
2016/07/04 Javascript
Node.js Streams文件读写操作详解
2016/07/04 Javascript
js 声明数组和向数组中添加对象变量的简单实例
2016/07/28 Javascript
nodejs学习笔记之路由
2017/03/27 NodeJs
微信小程序如何获取用户收货地址
2018/11/27 Javascript
Vue自定义属性实例分析
2019/02/23 Javascript
微信小程序rich-text富文本用法实例分析
2019/05/20 Javascript
[36:29]2018DOTA2亚洲邀请赛 4.1 小组赛 A组加赛 LGD vs TNC
2018/04/02 DOTA
[01:00:49]DOTA2-DPC中国联赛 正赛 Ehome vs iG BO3 第二场 1月31日
2021/03/11 DOTA
Python两个整数相除得到浮点数值的方法
2015/03/18 Python
Python实现统计给定列表中指定数字出现次数的方法
2018/04/11 Python
python中itertools模块zip_longest函数详解
2018/06/12 Python
PyQt5实现简易计算器
2020/05/30 Python
对Python的交互模式和直接运行.py文件的区别详解
2019/06/29 Python
python实现画循环圆
2019/11/23 Python
Python爬虫之Selenium实现键盘事件
2020/12/04 Python
用CSS3来实现社交分享按钮
2014/11/11 HTML / CSS
实例教程 HTML5 Canvas 超炫酷烟花绽放动画实现代码
2014/11/05 HTML / CSS
全球500多个机场的接送服务:Suntransfers
2019/06/03 全球购物
给女儿的表扬信
2014/01/18 职场文书
2014年双拥工作总结
2014/11/21 职场文书
2016学习全国教书育人楷模先进事迹心得体会
2016/01/21 职场文书
如何计划开一家便利店?
2019/07/31 职场文书
OpenCV-Python 实现两张图片自动拼接成全景图
2021/06/11 Python
JavaScript流程控制(分支)
2021/12/06 Javascript