vue升级之路之vue-router的使用教程


Posted in Javascript onAugust 14, 2018

使用 Vue 构建的项目,一个页面是由多个组件构成的,而且经常是做成单页面应用,所以在跳转页面的时候,传统的 href 已经跟不上时代的步伐了,于是 vue-router 应运而生

在使用 vue-router 的时候,需要看看自己是否装了这个依赖,没有的话可以使用 npm install vue-router -S ,不过现在构建vue项目时有可以选择是否安装 vue-router,大家注意一下就行了

一、路由的配置

自动安装的vue-router,会在src 文件夹下有个一个 router -> index.js 文件 在 index.js 中创建 routers 对象,引入所需的组件并配置路径

vue升级之路之vue-router的使用教程 

在创建的 routers 对象中, path 配置了路由的路径,component 配置了映射的组件

然后在main.js里面引入router文件

vue升级之路之vue-router的使用教程 

在创建的 router 对象中,如果不配置 mode,就会使用默认的 hash 模式,该模式下会将路径格式化为 #! 开头。

添加 mode: 'history' 之后将使用 HTML5 history 模式,该模式下没有 # 前缀,而且可以使用 pushState 和 replaceState 来管理记录。

关于 HTML5 history 模式的更多内容,可以自行度娘

二、嵌套路由

在构建的vue实例中,为了加深项目层级,App.vue 只是作为一个存放组件的容器

vue升级之路之vue-router的使用教程 

其中 是用来渲染通过路由映射过来的组件,当路径更改时, 中的内容也会发生更改

上面已经配置了两个路由,当打开 http://localhost:8080 或者 http://localhost:8080/index的时候,就会在 中渲染 index.vue 组件 index.vue 是真正的父组件,其它的子组件都会渲染到 index.vue 中的

vue升级之路之vue-router的使用教程 

想要在一级路由中实现嵌套二级路由,就要修改 router -> index.js

vue升级之路之vue-router的使用教程 

在配置的路由后面,添加 children,并在 children 中添加二级路由,就能实现路由嵌套。 配置 path 的时候,以 " / " 开头的嵌套路径会被当作根路径,所以子路由的 path 需不需要添加 " / " 就要看个人需求了

三、使用 映射路由

如果只需要跳转页面,不需要添加验证方法的情况,可以使用 来实现导航的功能:

<router-link class="item" to="/index/login" >{{ text }}</router-link>
 <router-link class="item" :to="{path:url, query:data}" >{{ text }}</router-link>

在编译之后, 会被渲染为 标签, to 会被渲染为 href,当 被点击的时候,url 会发生相应的改变

如果使用 v-bind 指令,还可以在 to 后面接变量,配合 v-for 指令可以渲染路由菜单

如果需要传入不同参数 ,可以在路由中添加动态参数,给 to 传入一个对象

{
 path: item.url,
 query: { id: '007' }
}

然后还可以使用 $ route.query.id 来获取到对应的参数

四、编程式导航

然而在实际项目下,有很多链接在执行跳转之前,还会执行方法对数据进行处理,这时可以使用 this.$router.push(location) 来修改 url 完成跳转

// 绑定goLogin
<button class="login" @click="goLogin"></button>
// 定义goLogin
methods: {
    goLogin() {
      this.routes.push('/login')
    }
  },

push 后面可以是对象,也可以是字符串:

// 字符串
this.$router.push('/index')
// 对象
this.$router.push({ path: '/index' })
// 命名的路由
this.$router.push({ name: 'login', params: { userId: '123' }})
Javascript 相关文章推荐
javascript nextSibling 与 getNextElement(node) 使用介绍
Oct 13 Javascript
Extjs根据条件设置表格某行背景色示例
Jul 23 Javascript
JavaScript基本语法讲解
Jun 03 Javascript
jQuery实现默认是闭合的FAQ展开效果菜单
Sep 14 Javascript
JavaScript事件学习小结(五)js中事件类型之鼠标事件
Jun 09 Javascript
几句话带你理解JS中的this、闭包、原型链
Sep 26 Javascript
jquery Easyui Datagrid实现批量操作(编辑,删除,添加)
Feb 20 Javascript
JS中实现函数return多个返回值的实例
Feb 21 Javascript
vue数据双向绑定的注意点
Jun 23 Javascript
React之PureComponent的使用作用
Jul 10 Javascript
Element输入框带历史查询记录的实现示例
Jan 15 Javascript
微信小程序云开发修改云数据库中的数据方法
May 18 Javascript
layui table 参数设置方法
Aug 14 #Javascript
layui 表格的属性的显示转换方法
Aug 14 #Javascript
JS中数组与对象的遍历方法实例小结
Aug 14 #Javascript
layui实现table加载的示例代码
Aug 14 #Javascript
layui点击导航栏刷新tab页的示例代码
Aug 14 #Javascript
JavaScript中toLocaleString()和toString()的区别实例分析
Aug 14 #Javascript
layer插件select选中默认值的方法
Aug 14 #Javascript
You might like
Discuz!5的PHP代码高亮显示插件(黑暗中的舞者更新)
2007/01/29 PHP
(currentStyle)javascript为何有时用style得不到已设定的CSS的属性
2007/08/15 Javascript
jquery ajax 检测用户注册时用户名是否存在
2009/11/03 Javascript
在一个js文件里远程调用jquery.js会在ie8下的一个奇怪问题
2010/11/28 Javascript
jQuery的12招常用技巧分享
2011/08/08 Javascript
javascript学习笔记(七) js函数介绍
2012/06/19 Javascript
Jquery中ajax方法data参数的用法小结
2014/02/12 Javascript
js实现图片点击左右轮播
2015/07/08 Javascript
ECMAScript6轮播图实践知识总结
2016/08/17 Javascript
JS双击变input框批量修改内容
2016/12/12 Javascript
bootstrap table实现单击单元格可编辑功能
2017/03/28 Javascript
使用 Vue 绑定单个或多个 Class 名的实例代码
2018/01/08 Javascript
浏览器调试动态js脚本的方法(图解)
2018/01/19 Javascript
JavaScript检查数据中是否存在相同的元素(两种方法)
2018/10/07 Javascript
其实你可以少写点if else与switch(推荐)
2019/01/10 Javascript
Vue实现点击当前元素以外的地方隐藏当前元素(实现思路)
2019/12/04 Javascript
vue-iview动态新增和删除的方法
2020/06/17 Javascript
[52:52]DOTA2上海特级锦标赛C组资格赛#1 OG VS LGD第三局
2016/02/27 DOTA
Python实现抓取百度搜索结果页的网站标题信息
2015/01/22 Python
浅谈flask截获所有访问及before/after_request修饰器
2018/01/18 Python
如何使用 Pylint 来规范 Python 代码风格(来自IBM)
2018/04/06 Python
python RabbitMQ 使用详细介绍(小结)
2018/11/08 Python
python实现计数排序与桶排序实例代码
2019/03/28 Python
解决python中用matplotlib画多幅图时出现图形部分重叠的问题
2019/07/07 Python
pandas通过字典生成dataframe的方法步骤
2019/07/23 Python
python线程的几种创建方式详解
2019/08/29 Python
Python数据可视化处理库PyEcharts柱状图,饼图,线性图,词云图常用实例详解
2020/02/10 Python
python json.dumps() json.dump()的区别详解
2020/07/14 Python
python3.6中anaconda安装sklearn踩坑实录
2020/07/28 Python
Python 使用生成器代替线程的方法
2020/08/04 Python
发现两个有趣的CSS3动画效果
2013/08/14 HTML / CSS
大学生职业规划前言模板
2013/12/27 职场文书
应届专科生个人的自我评价
2014/01/05 职场文书
购房委托书
2014/10/15 职场文书
Redis安装使用RedisJSON模块的方法
2022/03/23 Redis
SpringBoot使用AOP实现统计全局接口访问次数详解
2022/06/16 Java/Android