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 相关文章推荐
你需要知道的JavsScript可以做什么?
Jun 29 Javascript
javascript 事件绑定问题
Jan 01 Javascript
通过jquery还原含有rowspan、colspan的table的实现方法
Feb 10 Javascript
jQuery筛选器children()案例详解(图文)
Feb 17 Javascript
深入理解JavaScript系列(38):设计模式之职责链模式详解
Mar 04 Javascript
javascript中的正则表达式使用详解
Aug 30 Javascript
jQuery+ajax实现实用的点赞插件代码
Jul 06 Javascript
在js里怎么实现Xcode里的callFuncN方法(详解)
Nov 05 Javascript
Angular4.0中引入laydate.js日期插件的方法教程
Dec 25 Javascript
Node.js 多线程完全指南总结
Mar 27 Javascript
Vue 动态添加路由及生成菜单的方法示例
Jun 20 Javascript
javascript对象3个属性特征
Nov 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
php配置php-fpm启动参数及配置详解
2013/11/04 PHP
PHP使用imagick读取PDF生成png缩略图的两种方法
2014/03/20 PHP
PHP+Redis开发的书签案例实战详解
2019/07/09 PHP
常用的jQuery前端技巧收集
2014/12/24 Javascript
JavaScript中操作Mysql数据库实例
2015/04/02 Javascript
Vue + Webpack + Vue-loader学习教程之相关配置篇
2017/03/14 Javascript
基于bootstrap实现多个下拉框同时搜索功能
2017/07/19 Javascript
Angularjs渲染的 using 指令的星级评分系统示例
2017/11/09 Javascript
JS实现获取word文档内容并输出显示到html页面示例
2018/06/23 Javascript
vue侧边栏动态生成下级菜单的方法
2018/09/07 Javascript
react native 原生模块桥接的简单说明小结
2019/02/26 Javascript
JS块级作用域和私有变量实例分析
2019/05/11 Javascript
vue实现路由切换改变title功能
2019/05/28 Javascript
关于JS模块化的知识点分享
2019/10/16 Javascript
javascript实现文字跑马灯效果
2020/06/18 Javascript
[01:56]无止竞 再出发——中国军团出征2017年DOTA2国际邀请赛
2017/07/05 DOTA
查看Python安装路径以及安装包路径小技巧
2015/04/28 Python
Phantomjs抓取渲染JS后的网页(Python代码)
2016/05/13 Python
Python使用pylab库实现绘制直方图功能示例
2018/06/01 Python
Python3中正则模块re.compile、re.match及re.search函数用法详解
2018/06/11 Python
python使用matplotlib模块绘制多条折线图、散点图
2020/04/26 Python
python将.ppm格式图片转换成.jpg格式文件的方法
2018/10/27 Python
python训练数据时打乱训练数据与标签的两种方法小结
2018/11/08 Python
利用Python代码实现一键抠背景功能
2019/12/29 Python
python常用运维脚本实例小结
2020/02/14 Python
简单了解python shutil模块原理及使用方法
2020/04/28 Python
python入门教程之基本算术运算符
2020/11/13 Python
python中pop()函数的语法与实例
2020/12/01 Python
Python爬虫入门教程02之笔趣阁小说爬取
2021/01/24 Python
使用CSS3编写类似iOS中的复选框及带开关的按钮
2016/04/11 HTML / CSS
在C语言中实现抽象数据类型什么方法最好
2014/06/26 面试题
优秀毕业自我鉴定
2014/02/15 职场文书
《三峡》教学反思
2014/03/01 职场文书
中共广东省委常委会党的群众路线教育实践活动整改方案
2014/09/23 职场文书
小升初自荐信怎么写
2015/03/26 职场文书
【海涛教你打DOTA】剑圣第一人称视角解说
2022/04/01 DOTA