详解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 17 Javascript
Node.js与PHP、Python的字符处理性能对比
Jul 06 Javascript
jQuery处理json数据返回数组和输出的方法
Mar 11 Javascript
javascript实现简单的页面右下角提示信息框
Jul 31 Javascript
vue2.0构建单页应用最佳实战
Apr 01 Javascript
详解angularjs中的隔离作用域理解以及绑定策略
May 31 Javascript
关于Google发布的JavaScript代码规范你要知道哪些
Apr 04 Javascript
Vue+Jwt+SpringBoot+Ldap完成登录认证的示例代码
May 21 Javascript
详解Angular6学习笔记之主从组件
Sep 05 Javascript
Element-ui之ElScrollBar组件滚动条的使用方法
Sep 14 Javascript
node将geojson转shp返回给前端的实现方法
May 29 Javascript
使用JQuery自动完成插件Auto Complete详解
Jun 18 jQuery
实例讲解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设计模式 Factory(工厂模式)
2011/06/26 PHP
PHP中将数组转成XML格式的实现代码
2011/08/08 PHP
Yii入门教程之目录结构、入口文件及路由设置
2014/11/25 PHP
thinkphp集成前端脚手架Vue-cli的教程图解
2018/08/30 PHP
JavaScript 模拟用户单击事件
2009/12/31 Javascript
jQuery提交表单ajax查询实例代码
2012/10/07 Javascript
JavaScript初学者建议:不要去管浏览器兼容
2014/02/04 Javascript
详解JavaScript中的4种类型识别方法
2015/09/14 Javascript
JQuery+Ajax实现数据查询、排序和分页功能
2015/09/27 Javascript
浅析JavaScript中浏览器的兼容问题
2016/04/19 Javascript
利用jsonp跨域调用百度js实现搜索框智能提示
2016/08/24 Javascript
Angular和百度地图的结合实例代码
2016/10/19 Javascript
JavaScript使用享元模式实现文件上传优化操作示例
2018/08/07 Javascript
JS正则表达式常见函数与用法小结
2020/04/13 Javascript
[01:21]DOTA2新纪元-7.0新版本即将开启!
2016/12/11 DOTA
[51:29]完美世界DOTA2联赛循环赛 Matador vs Forest BO2第一场 11.05
2020/11/05 DOTA
Python中List.count()方法的使用教程
2015/05/20 Python
Flask框架的学习指南之用户登录管理
2016/11/20 Python
遗传算法python版
2018/03/19 Python
Python高级特性 切片 迭代解析
2019/08/23 Python
如何查看Django ORM执行的SQL语句的实现
2020/04/20 Python
python except异常处理之后不退出,解决异常继续执行的实现
2020/04/25 Python
Python实现初始化不同的变量类型为空值
2020/06/02 Python
python 识别登录验证码图片功能的实现代码(完整代码)
2020/07/03 Python
通过实例了解python__slots__使用方法
2020/09/14 Python
HTML5表格_动力节点Java学院整理
2017/07/11 HTML / CSS
AmazeUI中各种的导航式菜单与解决方法
2020/08/19 HTML / CSS
ASOS比利时:英国线上零售商及自有品牌
2018/07/29 全球购物
个人找工作求职简历的自我评价
2013/10/20 职场文书
质检的岗位职责
2013/11/17 职场文书
霸王洗发水广告词
2014/03/14 职场文书
公司联欢会策划方案
2014/05/19 职场文书
品牌形象定位,全面分析
2019/07/23 职场文书
微信小程序和php的登录实现
2021/04/01 PHP
Python中的np.argmin()和np.argmax()函数用法
2021/06/02 Python
MIME类型中application/xml与text/xml的区别介绍
2022/01/18 HTML / CSS