详解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 相关文章推荐
如何阻止复制剪切和粘贴事件为了表单内容的安全
May 23 Javascript
一个JavaScript变量声明的知识点
Oct 28 Javascript
删除javascript中注释语句的正则表达式
Jun 11 Javascript
用javascript实现自动输出网页文本
Jul 30 Javascript
jQuery实现点击小图片淡入淡出显示大图片特效
Sep 09 Javascript
node.js的事件机制
Feb 08 Javascript
BootStrap中jQuery插件Carousel实现轮播广告效果
Mar 27 jQuery
详解如何让InstantClick兼容MathJax、百度统计等
Sep 12 Javascript
react-native-fs实现文件下载、文本存储的示例代码
Sep 22 Javascript
JQueryDOM之样式操作
Mar 27 jQuery
Vue中多元素过渡特效的解决方案
Feb 05 Javascript
解决vue项目运行npm run serve报错的问题
Oct 26 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创建PDF中文文档
2006/10/09 PHP
一些常用的php简单命令代码集锦
2007/09/24 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
Referer原理与图片防盗链实现方法详解
2019/07/03 PHP
php正则表达式使用方法整理集合
2020/01/31 PHP
JavaScript中的集合及效率
2010/01/08 Javascript
如何在父窗口中得知window.open()出的子窗口关闭事件
2013/10/15 Javascript
jquery获得keycode的示例代码
2013/12/30 Javascript
JS实现回到页面顶部动画效果的简单实例
2016/05/24 Javascript
JavaScript SHA-256加密算法详细代码
2016/10/06 Javascript
JS类的定义与使用方法深入探索
2016/11/26 Javascript
利用Node.js+Koa框架实现前后端交互的方法
2017/02/27 Javascript
原生js实现选项卡功能
2017/03/08 Javascript
Vue2.0 多 Tab切换组件的封装实例
2017/07/28 Javascript
浅谈箭头函数写法在ReactJs中的使用
2017/08/22 Javascript
微信小程序实现打开内置地图功能【附源码下载】
2017/12/07 Javascript
Vue用v-for给循环标签自身属性添加属性值的方法
2018/10/18 Javascript
javascript移动端 电子书 翻页效果实现代码
2019/09/07 Javascript
javascript实现支付宝滑块验证码效果
2020/07/24 Javascript
[06:49]2018DOTA2国际邀请赛寻真——VirtusPro傲视群雄
2018/08/12 DOTA
[01:52]2020年DOTA2 TI10夏季活动预告片
2020/07/15 DOTA
python中mechanize库的简单使用示例
2014/01/10 Python
python中将函数赋值给变量时需要注意的一些问题
2017/08/18 Python
pytorch nn.Conv2d()中的padding以及输出大小方式
2020/01/10 Python
Python 列表推导式需要注意的地方
2020/10/23 Python
HTML5 图片预加载的示例代码
2020/03/25 HTML / CSS
英国打印机墨水和碳粉商店:Printerinks
2017/06/30 全球购物
英国比较机场停车场网站:Airport Parking Essentials
2019/12/01 全球购物
护士岗位职责
2014/02/16 职场文书
家居装修公司创业计划书范文
2014/03/20 职场文书
教师一岗双责责任书
2014/04/16 职场文书
2014年评职称工作总结
2014/11/20 职场文书
欠条格式范本
2015/07/03 职场文书
2015年校医个人工作总结
2015/07/24 职场文书
面试被问select......for update会锁表还是锁行
2021/11/11 MySQL
利用JavaScript写一个简单计算器
2021/11/27 Javascript