详解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 相关文章推荐
一个很简单的办法实现TD的加亮效果.
Jun 29 Javascript
javascript jQuery $.post $.ajax用法
Jul 09 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
Feb 24 Javascript
JS实现不使用图片仿Windows右键菜单效果代码
Oct 22 Javascript
每天一篇javascript学习小结(属性定义方法)
Nov 19 Javascript
javascript中类的定义方式详解(四种方式)
Dec 22 Javascript
js判断空对象的实例(超简单)
Jul 26 Javascript
关于iframe跨域POST提交的方法示例
Jan 15 Javascript
JavaScript日期选择功能示例
Jan 16 Javascript
基于Bootstrap分页的实例讲解(必看篇)
Jul 04 Javascript
基于LayUI实现前端分页功能的方法
Jul 22 Javascript
js实现登录拖拽窗口
Feb 10 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
《被神捡到的男人》动画化计划进行中!
2020/03/06 日漫
PHP 金额数字转换成英文
2010/05/06 PHP
深入解析PHP中的(伪)多线程与多进程
2013/07/01 PHP
jQuery实现密保互斥问题解决方案
2013/08/16 Javascript
js 实现菜单上下显示附效果图
2013/11/21 Javascript
jQuery实现布局高宽自适应的简单实例
2016/05/28 Javascript
jQuery绑定自定义事件的魔法升级版
2016/06/30 Javascript
easyui combobox开启搜索自动完成功能的实例代码
2016/11/08 Javascript
xmlplus组件设计系列之文本框(TextBox)(3)
2017/05/03 Javascript
详解使用vue脚手架工具搭建vue-webpack项目
2017/05/10 Javascript
Node.js调用fs.renameSync报错(Error: EXDEV, cross-device link not permitted)
2017/12/27 Javascript
利用Node.js如何实现文件循环覆写
2019/04/05 Javascript
JavaScript中的一些实用小技巧总结
2019/04/07 Javascript
ES6入门教程之变量的解构赋值详解
2019/04/13 Javascript
Node.JS在命令行中检查Chrome浏览器是否安装并打开指定网址
2019/05/21 Javascript
Centos7 安装Node.js10以上版本的方法步骤
2019/10/15 Javascript
基于javascript处理nginx请求过程详解
2020/07/07 Javascript
vue:el-input输入时限制输入的类型操作
2020/08/05 Javascript
vant 时间选择器--开始时间和结束时间实例
2020/11/04 Javascript
Python时间戳与时间字符串互相转换实例代码
2013/11/28 Python
在Python中使用lambda高效操作列表的教程
2015/04/24 Python
numpy实现合并多维矩阵、list的扩展方法
2018/05/08 Python
django反向解析和正向解析的方式
2018/06/05 Python
用django-allauth实现第三方登录的示例代码
2019/06/24 Python
如何基于python操作json文件获取内容
2019/12/24 Python
Pyecharts绘制全球流向图的示例代码
2020/01/08 Python
python GUI库图形界面开发之PyQt5时间控件QTimer详细使用方法与实例
2020/02/26 Python
Canvas 像素处理之改变透明度的实现代码
2019/01/08 HTML / CSS
进修护士自我鉴定
2013/10/14 职场文书
毕业晚会主持词
2014/03/24 职场文书
新春寄语大全
2014/04/09 职场文书
促销活动总结怎么写
2014/06/25 职场文书
绵山导游词
2015/02/05 职场文书
自主招生推荐信格式模板
2015/03/24 职场文书
物业前台接待岗位职责
2015/04/03 职场文书
2019广播稿怎么写
2019/04/17 职场文书