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 相关文章推荐
jqgrid 表格数据导出实例
Nov 21 Javascript
Extjs4中Form的使用之本地hiddenfield
Nov 26 Javascript
JS小功能(setInterval实现图片效果显示时间)实例代码
Nov 28 Javascript
js中split函数的使用方法说明
Dec 26 Javascript
JavaScript学习笔记之JS函数
Jan 22 Javascript
JS动态显示表格上下frame的方法
Mar 31 Javascript
对JavaScript客户端应用编程的一些建议
Jun 24 Javascript
JS函数的定义与调用方法推荐
May 12 Javascript
js阻止浏览器默认行为触发的通用方法(推荐)
May 15 Javascript
jquery实现网页定位导航
Aug 23 Javascript
jQuery插件autocomplete使用详解
Feb 04 Javascript
在vue中import()语法不能传入变量的问题及解决
Apr 01 Vue.js
浅谈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
法兰绒滤网冲泡
2021/03/03 冲泡冲煮
PHP下通过file_get_contents的代理使用方法
2011/02/16 PHP
PHP中获取时间的下一周下个月的方法
2014/03/18 PHP
codeigniter发送邮件并打印调试信息的方法
2015/03/21 PHP
javascript 对象的定义方法
2007/01/10 Javascript
javascript 定义新对象方法
2010/02/20 Javascript
javascript eval(func())使用示例
2013/12/05 Javascript
createTextRange()的使用示例含文本框选中部分文字内容
2014/02/24 Javascript
jQuery中andSelf()方法用法实例
2015/01/08 Javascript
jQuery显示和隐藏 常用的状态判断方法
2015/01/29 Javascript
jquery实现仿新浪微博带动画效果弹出层代码(可关闭、可拖动)
2015/10/12 Javascript
基于javascript如何传递特殊字符
2015/11/30 Javascript
javascript 数组去重复(在线去重工具)
2016/12/17 Javascript
jQuery基于cookie实现换肤功能实例
2017/10/14 jQuery
原生JS+HTML5实现的可调节写字板功能示例
2018/08/30 Javascript
Typescript的三种运行方式(小结)
2019/09/18 Javascript
express中static中间件的具体使用方法
2019/10/17 Javascript
Vue自定义render统一项目组弹框功能
2020/06/07 Javascript
[05:49]2014DOTA2TI4正赛第二日综述 昔日冠军纷纷落马 VG LGD占尽先机
2014/07/20 DOTA
[01:46]辉夜杯—打造中国DOTA新格局
2015/12/25 DOTA
Python实现线程状态监测简单示例
2018/03/28 Python
win8下python3.4安装和环境配置图文教程
2018/07/31 Python
python selenium firefox使用详解
2019/02/26 Python
详解python读取和输出到txt
2019/03/29 Python
Python银行系统实战源码
2019/10/25 Python
详解移动端HTML5页面端去掉input输入框的白色背景和边框(兼容Android和ios)
2016/12/15 HTML / CSS
Pretty You London官网:英国拖鞋和睡衣品牌
2019/05/08 全球购物
俄罗斯童装网上商店:BebaKids
2020/06/06 全球购物
Java的接口和C++的虚类的相同和不同处
2014/03/27 面试题
毕业生个人求职信范文分享
2014/01/05 职场文书
函授本科个人自我鉴定
2014/03/25 职场文书
雷人标语集锦
2014/06/19 职场文书
毕业实习计划书
2015/01/16 职场文书
戒赌保证书
2015/05/11 职场文书
党章党规党纪学习心得体会
2016/01/14 职场文书
喜迎建国70周年:有关爱国的名言名句
2019/09/24 职场文书