Vue-Router2.X多种路由实现方式总结


Posted in Javascript onFebruary 09, 2018

注意:vue-router 2只适用于Vue2.x版本,下面我们是基于vue2.0讲的如何使用vue-router 2实现路由功能。

推荐使用npm安装。

npm install vue-router

一、使用路由

在main.js中,需要明确安装路由功能:

import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App.vue'
Vue.use(VueRouter)

1.定义组件,这里使用从其他文件import进来

import index from './components/index.vue'
import hello from './components/hello.vue'

2.定义路由

const routes = [
 { path: '/index', component: index },
 { path: '/hello', component: hello },
]

3.创建 router 实例,然后传 routes 配置

const router = new VueRouter({
 routes
})

4.创建和挂载根实例。通过 router 配置参数注入路由,从而让整个应用都有路由功能

const app = new Vue({
 router,
 render: h => h(App)
}).$mount('#app')

经过上面的配置之后呢,路由匹配到的组件将会渲染到App.vue里的<router-view></router-view>

那么这个App.vue里应该这样写:

<template>
 <div id="app">
  <router-view></router-view>
 </div>
</template>
index.html里呢要这样写:
<body>
 <div id="app"></div>
</body>

这样就会把渲染出来的页面挂载到这个id为app的div里了。

二、重定向 redirect

const routes = [
 { path: '/', redirect: '/index'},  // 这样进/ 就会跳转到/index
 { path: '/index', component: index }
]

三、嵌套路由

const routes = [
 { path: '/index', component: index,
  children: [
   { path: 'info', component: info}
  ]
  }
]

通过/index/info就可以访问到info组件了

四、懒加载

const routes = [
 { path: '/index', component: resolve => require(['./index.vue'], resolve) },
 { path: '/hello', component: resolve => require(['./hello.vue'], resolve) },
]

通过懒加载就不会一次性把所有组件都加载进来,而是当你访问到那个组件的时候才会加载那一个。对于组件比较多的应用会提高首次加载速度。

五、<router-link>

在vue-router 2中,使用了<router-link></router-link>替换1版本中的a标签

<!-- 字符串 -->
<router-link to="home">Home</router-link>
<!-- 渲染结果 -->
<a href="home" rel="external nofollow" >Home</a>
<!-- 使用 v-bind 的 JS 表达式 -->
<router-link v-bind:to="'home'">Home</router-link>
<!-- 不写 v-bind 也可以,就像绑定别的属性一样 -->
<router-link :to="'home'">Home</router-link>
<!-- 同上 -->
<router-link :to="{ path: 'home' }">Home</router-link>
<!-- 命名的路由 -->
<router-link :to="{ name: 'user', params: { userId: 123 }}">User</router-link>
<!-- 带查询参数,下面的结果为 /register?plan=private -->
<router-link :to="{ path: 'register', query: { plan: 'private' }}">Register</router-link>

六、路由信息对象

1.$route.path

字符串,对应当前路由的路径,总是解析为绝对路径,如 "/foo/bar"。

2.$route.params

一个 key/value 对象,包含了 动态片段 和 全匹配片段,如果没有路由参数,就是一个空对象。

3.$route.query

一个 key/value 对象,表示 URL 查询参数。例如,对于路径 /foo?user=1,则有 $route.query.user == 1,如果没有查询参数,则是个空对象。

4.$route.hash

当前路由的 hash 值 (不带 #) ,如果没有 hash 值,则为空字符串。

5.$route.fullPath

完成解析后的 URL,包含查询参数和 hash 的完整路径。

6.$route.matched

一个数组,包含当前路由的所有嵌套路径片段的 路由记录 。路由记录就是 routes 配置数组中的对象副本(还有在 children 数组)。

综合上述,一个包含重定向、嵌套路由、懒加载的main.js如下:

import Vue from 'vue'
import VueRouter from 'vue-router'
import App from './App'
Vue.use(VueRouter)
const router = new VueRouter({
 routes:[
 { path: '/', redirect: '/index' },
 { path: '/index', component: resolve => require(['./components/index.vue'], resolve),
  children:[
   { path: 'info', component: resolve => require(['./components/info.vue'], resolve) }
  ]
 },
 { path: '/hello', component: resolve => require(['./components/hello.vue'], resolve) },
 ]
})
const app = new Vue({
 router,
 render: h => h(App)
}).$mount('#app')

更详细的vue-router功能请参考文档:https://router.vuejs.org/zh-cn/

以上这篇Vue-Router2.X多种路由实现方式总结就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js 获取浏览器高度和宽度值(多浏览器)
Sep 02 Javascript
jQuery $.extend()用法总结
Jun 15 Javascript
JS网页在线获取鼠标坐标值的方法
Feb 28 Javascript
JS实现的自定义右键菜单实例二则
Sep 01 Javascript
javascript实现简单计算器效果【推荐】
Apr 19 Javascript
基于jquery实现即时检查格式是否正确的表单
May 06 Javascript
javascript字符串对象常用api函数小结(连接,替换,分割,转换等)
Sep 20 Javascript
Javascript 详解封装from表单数据为json串进行ajax提交
Mar 29 Javascript
vue.js中引入vuex储存接口数据及调用的详细流程
Dec 14 Javascript
JavaScript设计模式之模板方法模式原理与用法示例
Aug 07 Javascript
记录一篇关于redux-saga的基本使用过程
Aug 18 Javascript
JavaScript中如何调用Java方法
Sep 16 Javascript
浅谈react受控组件与非受控组件(小结)
Feb 09 #Javascript
基于Vue2.X的路由和钩子函数详解
Feb 09 #Javascript
Vuejs 单文件组件实例详解
Feb 09 #Javascript
vue-lazyload图片延迟加载插件的实例讲解
Feb 09 #Javascript
详解js正则表达式验证时间格式xxxx-xx-xx形式
Feb 09 #Javascript
在Vue中使用highCharts绘制3d饼图的方法
Feb 08 #Javascript
vue中使用ueditor富文本编辑器
Feb 08 #Javascript
You might like
跟我学小偷程序之成功偷取首页(第三天)
2006/10/09 PHP
PHP读取目录下所有文件的代码
2008/01/07 PHP
PHP实现下载断点续传的方法
2014/11/12 PHP
PHP中if和or运行效率对比
2014/12/12 PHP
详解 PHP加密解密字符串函数附源码下载
2015/12/18 PHP
WordPress主题制作之模板文件的引入方法
2015/12/28 PHP
PHP实现类似于C语言的文件读取及解析功能
2017/09/01 PHP
Laravel源码解析之路由的使用和示例详解
2018/09/27 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
jQuery对象和DOM对象的相互转化实现代码
2010/03/02 Javascript
javascript学习(二)javascript常见问题总结
2013/01/02 Javascript
jQuery插件实现屏蔽单个元素使用户无法点击
2013/04/12 Javascript
jquery获取当前日期的方法
2015/01/14 Javascript
JavaScript常用脚本汇总(三)
2015/03/04 Javascript
第七章之菜单按钮图标组件
2016/04/25 Javascript
ionic在开发ios系统微信时键盘挡住输入框的解决方法(键盘弹出问题)
2016/09/06 Javascript
详解vuex 渐进式教程实例代码
2018/11/27 Javascript
vue动态设置页面title的方法实例
2020/08/23 Javascript
原生小程序封装跑马灯效果
2020/10/21 Javascript
详解如何在vue+element-ui的项目中封装dialog组件
2020/12/11 Vue.js
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
用Python脚本来删除指定容量以上的文件的教程
2015/05/04 Python
python类中super()和__init__()的区别
2016/10/18 Python
解决python测试opencv时imread导致的错误问题
2019/01/26 Python
Python学习笔记之For循环用法详解
2019/08/14 Python
django ajax发送post请求的两种方法
2020/01/05 Python
tensorflow实现从.ckpt文件中读取任意变量
2020/05/26 Python
Python 实现国产SM3加密算法的示例代码
2020/09/21 Python
澳大利亚个性化儿童礼品网站:Bright Star Kids
2019/06/14 全球购物
捐款倡议书范文
2014/02/02 职场文书
青年志愿者活动方案
2014/08/17 职场文书
远程培训的心得体会
2014/09/01 职场文书
怎么写工作检讨书
2014/11/16 职场文书
幼儿园教师个人总结
2015/02/05 职场文书
清洁工工作总结
2015/08/11 职场文书
2016年3月份红领巾广播稿
2015/12/21 职场文书