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 相关文章推荐
非常好的js代码
Jun 27 Javascript
javascript基础的动画教程,直观易懂
Jan 10 Javascript
js兼容的placeholder属性详解
Aug 18 Javascript
window.open()实现post传递参数
Mar 12 Javascript
再JavaScript的jQuery库中编写动画效果的指南
Aug 13 Javascript
关于javascript中限定时间内防止按钮重复点击的思路详解
Aug 16 Javascript
利用JQuery阻止事件冒泡
Dec 01 Javascript
微信小程序 Button 组件详解及简单实例
Jan 10 Javascript
Bootstrap输入框组件简单实现代码
Mar 06 Javascript
通过jQuery学习js类型判断的技巧
May 27 jQuery
JSON 入门教程基础篇 json入门学习笔记
Sep 22 Javascript
原生小程序封装跑马灯效果
Oct 21 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
php mysql Errcode: 28 终极解决方法
2009/07/01 PHP
使用PHPMYADMIN操作mysql数据库添加新用户和数据库的方法
2010/04/02 PHP
php模板函数 正则实现代码
2012/10/15 PHP
php实现事件监听与触发的方法
2014/11/21 PHP
php防止sql注入简单分析
2015/03/18 PHP
微信公众号开发客服接口实例代码
2016/10/21 PHP
PHP笛卡尔积实现算法示例
2018/07/30 PHP
解析Javascript中中括号“[]”的多义性
2013/12/03 Javascript
JavaScript中switch判断容易犯错的一个细节
2014/08/27 Javascript
jquery实现多屏多图焦点图切换特效的方法
2015/05/04 Javascript
Javascript中的几种继承方式对比分析
2016/03/22 Javascript
BootStrap CSS全局样式和表格样式源码解析
2017/01/20 Javascript
vue.js开发环境搭建教程
2017/05/04 Javascript
js实现QQ面板拖拽效果(慕课网DOM事件探秘)(全)
2017/09/19 Javascript
Node.js学习之TCP/IP数据通讯(实例讲解)
2017/10/11 Javascript
JavaScript实现的超简单计算器功能示例
2017/12/23 Javascript
vue中axios解决跨域问题和拦截器的使用方法
2018/03/07 Javascript
angularJs中orderBy筛选以及filter过滤数据的方法
2018/09/30 Javascript
微信小程序封装分享与分销功能过程解析
2019/08/13 Javascript
layui动态渲染生成select的option值方法
2019/09/23 Javascript
[02:28]DOTA2 2017国际邀请赛小组赛回顾
2017/08/09 DOTA
python中的实例方法、静态方法、类方法、类变量和实例变量浅析
2014/04/26 Python
python使用cStringIO实现临时内存文件访问的方法
2015/03/26 Python
分析Python的Django框架的运行方式及处理流程
2015/04/08 Python
Python中的模块导入和读取键盘输入的方法
2015/10/16 Python
使用Python制作自动推送微信消息提醒的备忘录功能
2018/09/06 Python
python GUI库图形界面开发之PyQt5树形结构控件QTreeWidget详细使用方法与实例
2020/03/02 Python
详解Flask前后端分离项目案例
2020/07/24 Python
python将YUV420P文件转PNG图片格式的两种方法
2021/01/22 Python
HTML5播放实现rtmp流直播
2020/06/16 HTML / CSS
应聘教师推荐信
2013/10/31 职场文书
放飞梦想演讲稿
2014/05/05 职场文书
水电维修专业推荐信
2014/09/06 职场文书
2015年酒店工作总结范文
2015/04/07 职场文书
创业计划书之少年玩具店
2019/09/05 职场文书
http通过StreamingHttpResponse完成连续的数据传输长链接方式
2022/02/12 Python