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 相关文章推荐
jQuery 版本的文本输入框检查器Input Check
Jul 09 Javascript
js中将String转换为number以便比较
Jul 08 Javascript
JavaScript的各种常见函数定义方法
Sep 16 Javascript
理解Javascript的动态语言特性
Jun 17 Javascript
Bootstrap页面缩小变形的快速解决办法
Feb 03 Javascript
浅谈React组件之性能优化
Mar 02 Javascript
vue 自定义 select内置组件
Apr 10 Javascript
chosen实现省市区三级联动
Aug 16 Javascript
泛谈JS逻辑判断选择器 || &amp;&amp;
May 24 Javascript
jquery将信息遍历到界面上实例代码
Jan 21 jQuery
vue路由缓存的几种实现方式小结
Feb 02 Javascript
vue实现导航菜单和编辑文本的示例代码
Jul 04 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自动加载autoload机制示例分享
2014/02/20 PHP
ThinkPHP之import方法实例详解
2014/06/20 PHP
CodeIgniter采用config控制的多语言实现根据浏览器语言自动转换功能
2014/07/18 PHP
PHP的Yii框架中View视图的使用进阶
2016/03/29 PHP
php根据地址获取百度地图经纬度的实例方法
2019/09/03 PHP
jquery插件 cluetip 关键词注释
2010/01/12 Javascript
关于jQuery的inArray 方法介绍
2011/10/08 Javascript
浅谈Javascript中匀速运动的停止条件
2014/12/19 Javascript
JavaScript中的Truthy和Falsy介绍
2015/01/01 Javascript
延时加载JavaScript代码提高速度
2015/12/27 Javascript
jQuery Dialog对话框事件用法实例分析
2016/05/10 Javascript
javascript实现滑动解锁功能
2017/03/22 Javascript
vue路由教程之静态路由
2019/09/03 Javascript
python实现简单的TCP代理服务器
2014/10/08 Python
Python使用xlrd读取Excel格式文件的方法
2015/03/10 Python
Python实现批量更换指定目录下文件扩展名的方法
2016/09/19 Python
python中的for循环
2018/09/28 Python
PyQt5 QTableView设置某一列不可编辑的方法
2019/06/25 Python
python装饰器原理与用法深入详解
2019/12/19 Python
python线程池如何使用
2020/05/28 Python
Django model重写save方法及update踩坑详解
2020/07/27 Python
Python操控mysql批量插入数据的实现方法
2020/10/27 Python
衰败城市英国官网:Urban Decay英国
2020/04/29 全球购物
电厂职工自我鉴定
2014/02/20 职场文书
模特职业生涯规划范文
2014/02/26 职场文书
8和9的加减法教学反思
2014/05/01 职场文书
2015年采购工作总结
2015/04/10 职场文书
红色经典观后感
2015/06/18 职场文书
幼儿园开学报名通知
2015/07/16 职场文书
2016年党员干部廉政承诺书
2016/03/24 职场文书
用python批量解压带密码的压缩包
2021/05/31 Python
浅谈MySQL表空间回收的正确姿势
2021/10/05 MySQL
python分分钟绘制精美地图海报
2022/02/15 Python
关于Python使用turtle库画任意图的问题
2022/04/01 Python
Win11 BitLocker 驱动器加密
2022/04/19 数码科技
Golang 切片(Slice)实现增删改查
2022/04/22 Golang