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 相关文章推荐
showModelessDialog()使用详解
Sep 07 Javascript
JS关键字球状旋转效果的实例代码
Nov 29 Javascript
JS判断、校验MAC地址的2个实例
May 05 Javascript
javascript实现控制文字大中小显示
Apr 28 Javascript
js文本框走动跑马灯效果代码分享
Aug 25 Javascript
javascript中this指向详解
Apr 23 Javascript
基于Jquery插件Uploadify实现实时显示进度条上传图片
Mar 26 Javascript
JSONP跨域请求实例详解
Jul 04 Javascript
AngularJS实现tab选项卡的方法详解
Jul 05 Javascript
详解angular路由高亮之RouterLinkActive
Apr 28 Javascript
浅谈angularJs函数的使用方法(大小写转换,拷贝,扩充对象)
Oct 08 Javascript
vue created钩子函数与mounted钩子函数的用法区别
Nov 05 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
php trim 去除空字符的定义与语法介绍
2010/05/31 PHP
解析php常用image图像函数集
2013/06/24 PHP
PHP性能测试工具xhprof安装与使用方法详解
2018/04/29 PHP
PHP的PDO连接讲解
2019/01/24 PHP
JavaScript Base64编码和解码,实现URL参数传递。
2006/09/18 Javascript
小型js框架veryide.librar源代码
2009/03/05 Javascript
js中关于String对象的replace使用详解
2011/05/24 Javascript
人人网javascript面试题 可以提前实现下
2012/01/05 Javascript
网站404页面3秒后跳到首页的实例代码
2013/08/16 Javascript
jQuery操作JSON的CRUD用法实例
2015/02/25 Javascript
jQuery实现鼠标悬停显示提示信息窗口的方法
2015/04/30 Javascript
3种js实现string的substring方法
2015/11/09 Javascript
基于jQuery实现响应式圆形图片轮播特效
2015/11/25 Javascript
javascript结合Flexbox简单实现滑动拼图游戏
2016/02/18 Javascript
JS实现图片平面旋转的方法
2016/03/01 Javascript
JavaScript实现二分查找实例代码
2017/02/22 Javascript
JS实现移动端实时监听输入框变化的实例代码
2017/04/12 Javascript
VueJs 将接口用webpack代理到本地的方法
2017/11/27 Javascript
解决vue打包css文件中背景图片的路径问题
2018/09/03 Javascript
JS使用正则表达式判断输入框失去焦点事件
2019/10/16 Javascript
js实现随机点名器精简版
2020/06/29 Javascript
一篇不错的Python入门教程
2007/02/08 Python
python 生成不重复的随机数的代码
2011/05/15 Python
python 实现自动远程登陆scp文件实例代码
2017/03/13 Python
Python绘制KS曲线的实现方法
2018/08/13 Python
对Python正则匹配IP、Url、Mail的方法详解
2018/12/25 Python
Python实现的在特定目录下导入模块功能分析
2019/02/11 Python
python+selenium 简易地疫情信息自动打卡签到功能的实现代码
2020/08/22 Python
美国男装连锁零售商:Men’s Wearhouse
2016/10/14 全球购物
面向对象编程OOP的优点
2013/01/22 面试题
生物化工专业个人自荐信
2013/09/26 职场文书
会走路的树教学反思
2014/02/20 职场文书
《画家乡》教学反思
2014/04/22 职场文书
个人总结怎么写
2015/02/26 职场文书
机关单位2016年创先争优活动总结
2016/04/05 职场文书
深度好文:50条没人告诉你的人生经验,句句精辟
2019/08/22 职场文书