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获取IP和PcName(IE)在vs中可用
Aug 02 Javascript
Knockout text绑定DOM的使用方法
Nov 15 Javascript
struts2+jquery组合验证注册用户是否存在
Apr 30 Javascript
jQuery插件Tooltipster实现漂亮的工具提示
Apr 12 Javascript
js编写当天简单日历效果【实现代码】
May 03 Javascript
关于 jQuery Easyui异步加载tree的问题解析
Dec 06 Javascript
深入理解JS继承和原型链的问题
Dec 17 Javascript
JavaScript之排序函数_动力节点Java学院整理
Jun 30 Javascript
JavaScript实现开关等效果
Sep 08 Javascript
layui问题之模拟table表格中的选中按钮选中事件的方法
Sep 20 Javascript
继承行为在 ES5 与 ES6 中的区别详解
Dec 24 Javascript
JavaScript 闭包的使用场景
Sep 17 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
使用 PHPStorm 开发 Laravel
2015/03/24 PHP
PHP永久登录、记住我功能实现方法和安全做法
2015/04/27 PHP
JavaScript类和继承 constructor属性
2010/03/04 Javascript
JavaScript高级程序设计 扩展--关于动态原型
2010/11/09 Javascript
xss文件页面内容读取(解决)
2010/11/28 Javascript
JavaScript中清空数组的三种方法分享
2011/04/07 Javascript
window.open的页面如何刷新(父页面)上层页面
2012/12/28 Javascript
js的Prototype属性解释及常用方法
2014/05/08 Javascript
javascript中的五种基本数据类型
2015/08/26 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
jQuery 获取页面li数组并删除不在数组中的key
2016/08/02 Javascript
前端面试题及答案整理(二)
2016/08/26 Javascript
BootStrap Table前台和后台分页对JSON格式的要求
2017/06/28 Javascript
vue代理和跨域问题的解决
2018/07/18 Javascript
微信小程序实现按字母排列选择城市功能
2019/11/25 Javascript
[01:48]2018DOTA2亚洲邀请赛主赛事第二日五佳镜头 VG完美团战逆转TNC
2018/04/05 DOTA
Python实例之wxpython中Frame使用方法
2014/06/09 Python
pygame播放音乐的方法
2015/05/19 Python
Python 的类、继承和多态详解
2017/07/16 Python
基于python内置函数与匿名函数详解
2018/01/09 Python
Python之ReportLab绘制条形码和二维码的实例
2018/01/15 Python
Pycharm中出现ImportError:DLL load failed:找不到指定模块的解决方法
2019/09/17 Python
python判断单向链表是否包括环,若包含则计算环入口的节点实例分析
2019/10/23 Python
Python csv文件的读写操作实例详解
2019/11/19 Python
Python数据可视化:顶级绘图库plotly详解
2019/12/07 Python
Python基于pyecharts实现关联图绘制
2020/03/27 Python
英国最受欢迎的手表网站:Watch Shop
2016/10/21 全球购物
销售人员获奖感言
2014/02/05 职场文书
绿色学校实施方案
2014/03/31 职场文书
服装仓管员岗位职责
2014/06/17 职场文书
买房子个人收入证明
2014/10/12 职场文书
2015年学校党建工作总结
2015/05/19 职场文书
小学生安全教育主题班会
2015/08/12 职场文书
《钓鱼的启示》教学反思
2016/02/18 职场文书
2019学生会干事辞职信
2019/06/27 职场文书
vue基于Teleport实现Modal组件
2021/05/31 Vue.js