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 相关文章推荐
node.js中的buffer.Buffer.isEncoding方法使用说明
Dec 14 Javascript
jQuery+ajax实现文章点赞功能的方法
Dec 31 Javascript
JavaScipt选取文档元素的方法(推荐)
Aug 05 Javascript
浅谈js的html元素的父节点,子节点
Aug 06 Javascript
AngularJS入门教程之静态模板详解
Aug 18 Javascript
js日期相关函数dateAdd,dateDiff,dateFormat等介绍
Sep 24 Javascript
信息滚动效果的实例讲解
Sep 18 Javascript
利用angular、react和vue实现相同的面试题组件
Feb 19 Javascript
使用Vue.js和Element-UI做一个简单登录页面的实例
Feb 23 Javascript
微信小程序使用canvas自适应屏幕画海报并保存图片功能
Jul 25 Javascript
js判断一个对象是数组(函数)的方法实例
Dec 19 Javascript
微信小程序利用for循环解决内容变更问题
Mar 05 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基础学习之变量的使用
2011/06/09 PHP
php后台如何避免用户直接进入方法实例
2013/10/15 PHP
php基于mcrypt的加密解密实例
2014/10/27 PHP
php5.4以下版本json不支持不转义内容中文的解决方法
2015/01/13 PHP
Yii安装与使用Excel扩展的方法
2016/07/13 PHP
PHP字符串逆序排列实现方法小结【strrev函数,二分法,循环法,递归法】
2017/01/13 PHP
兼容Mozilla必须知道的知识。
2007/01/09 Javascript
用javascript实现分割提取页面所需内容
2007/05/09 Javascript
jquery BS,dialog控件自适应大小
2009/07/06 Javascript
jquery表单验证使用插件formValidator
2012/11/10 Javascript
jQuery 写的简单打字游戏可以提示正确和错误的次数
2014/07/01 Javascript
JQuery实现当鼠标停留在某区域3秒后自动执行
2014/09/09 Javascript
JQuery中节点遍历方法实例
2015/05/18 Javascript
利用JS提交表单的几种方法和验证(必看篇)
2016/09/17 Javascript
详解照片瀑布流效果(js,jquery分别实现与知识点总结)
2017/01/01 Javascript
jfinal与bootstrap的登出实战详解
2017/11/27 Javascript
AngularJS实现与后台服务器进行交互的示例讲解
2018/08/13 Javascript
mpvue项目中使用第三方UI组件库的方法
2018/09/30 Javascript
详解微信小程序scroll-view横向滚动的实践踩坑及隐藏其滚动条的实现
2019/03/14 Javascript
Element中的Cascader(级联列表)动态加载省\市\区数据的方法
2019/03/27 Javascript
JS实现从对象获取对象中单个键值的方法示例
2019/06/05 Javascript
js实现简单贪吃蛇游戏
2020/05/15 Javascript
python用户管理系统
2018/03/13 Python
Python 一句话生成字母表的方法
2019/01/02 Python
Python Collatz序列实现过程解析
2019/10/12 Python
python设置环境变量的作用整理
2020/02/17 Python
django自定义非主键自增字段类型详解(auto increment field)
2020/03/30 Python
Python实现自动签到脚本功能
2020/08/20 Python
matplotlib绘制鼠标的十字光标的实现(自定义方式,官方实例)
2021/01/10 Python
澳大利亚领先的折扣药房:Chemist Direct(有中文站)
2018/11/24 全球购物
Fox Racing官方网站:越野摩托车和山地自行车装备和服装
2019/12/23 全球购物
岗位职责的含义
2013/11/17 职场文书
建筑安全员岗位职责
2014/03/13 职场文书
小学教师师德师风演讲稿
2014/08/22 职场文书
趣味运动会加油词
2015/07/18 职场文书
你有一份《诚信考试承诺书》待领取
2019/11/13 职场文书