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 相关文章推荐
通过ifame指向的页面高度调整iframe的高度
Oct 05 Javascript
硬盘浏览程序,保存成网页格式便可使用
Dec 03 Javascript
JQuery 浮动导航栏实现代码
Aug 27 Javascript
jquery蒙版控件实现代码
Dec 08 Javascript
基于jQuery通过jQuery.form.js插件使用ajax提交form表单
Aug 17 Javascript
JavaScript_ECMA5数组新特性详解
Jun 12 Javascript
详解vuejs之v-for列表渲染
Jun 22 Javascript
详解微信小程序 template添加绑定事件
Jun 23 Javascript
jQuery实现使用sort方法对json数据排序的方法
Apr 17 jQuery
Vue-cli配置打包文件本地使用的教程图解
Aug 02 Javascript
js实现简单的打印表格
Jan 15 Javascript
JS实现无限轮播无倒退效果
Sep 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 shell超强免杀、减少体积工具实现代码
2012/10/16 PHP
CodeIgniter基本配置详细介绍
2013/11/12 PHP
Yii+upload实现AJAX上传图片的方法
2016/07/13 PHP
PHP数组的定义、初始化和数组元素的显示实现代码
2016/11/05 PHP
jquery 模拟类搜索框自动完成搜索提示功能(改进)
2010/05/24 Javascript
让IE6支持min-width和max-width的方法
2010/06/25 Javascript
JavaScript 原型继承
2011/12/26 Javascript
jQuery插件jQuery-JSONP开发ajax调用使用注意事项
2013/11/22 Javascript
利用jQuary实现文字浮动提示效果示例代码
2013/12/26 Javascript
js菜单点击显示或隐藏效果的简单实例
2014/01/13 Javascript
动态创建script在IE中缓存js文件时导致编码的解决方法
2014/05/04 Javascript
javascript实现阻止iOS APP中的链接打开Safari浏览器
2014/06/12 Javascript
JavaScript中的函数嵌套使用
2015/06/04 Javascript
jQuery链式操作实例分析
2015/11/16 Javascript
jQuery实现弹出窗口弹出div层的实例代码
2017/01/09 Javascript
详解jquery validate实现表单验证 (正则表达式)
2017/01/18 Javascript
BootStrap Select清除选中的状态恢复默认状态
2017/06/20 Javascript
js中getter和setter用法实例分析
2018/08/14 Javascript
React中使用async validator进行表单验证的实例代码
2018/08/17 Javascript
微信小程序如何访问公众号文章
2019/07/08 Javascript
基于脚手架创建Vue项目实现步骤详解
2020/08/03 Javascript
vue 全局封装loading加载教程(全局监听)
2020/11/05 Javascript
Python操作MySQL简单实现方法
2015/01/26 Python
Python操作RabbitMQ服务器实现消息队列的路由功能
2016/06/29 Python
[原创]使用豆瓣提供的国内pypi源
2017/07/02 Python
Python实现的求解最小公倍数算法示例
2018/05/03 Python
浅析Python3中的对象垃圾收集机制
2019/06/06 Python
python实现爬取百度图片的方法示例
2019/07/06 Python
flask框架单元测试原理与用法实例分析
2019/07/23 Python
Python操作多维数组输出和矩阵运算示例
2019/11/28 Python
CSS3 实用技巧:实现黑白图像效果示例代码
2013/07/11 HTML / CSS
ZWILLING双立人英国网上商店:德国刀具锅具厨具品牌
2018/05/15 全球购物
回馈慈善的设计师太阳镜:DIFF eyewear
2019/10/17 全球购物
编程实现当输入某产品代码则打印出该产品记录的功能
2014/05/03 面试题
中医药大学毕业生自荐信
2013/11/08 职场文书
红领巾广播站广播稿(3篇)
2014/09/20 职场文书