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 相关文章推荐
Javascript Math对象
Aug 13 Javascript
JS 操作Array数组的方法及属性实例解析
Jan 08 Javascript
javascript抽象工厂模式详细说明
Dec 16 Javascript
实现前后端数据交互方法汇总
Apr 07 Javascript
jQuery的animate函数实现图文切换动画效果
May 03 Javascript
谈谈encodeURI和encodeURIComponent以及escape的区别与应用
Nov 24 Javascript
JavaScript数据类型学习笔记
Jan 25 Javascript
Bootstrap项目实战之子栏目资讯内容
Apr 25 Javascript
Vue数据驱动模拟实现5
Jan 13 Javascript
基于ES6 Array.of的用法(实例讲解)
Sep 05 Javascript
vue v-model实现自定义样式多选与单选功能
Jul 05 Javascript
nuxt.js写项目时增加错误提示页面操作
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实现MVC开发得最简单的方法――模型
2007/04/10 PHP
php中将指针移动到数据集初始位置的实现代码[mysql_data_seek]
2012/11/01 PHP
PHP生成随机密码类分享
2014/06/25 PHP
实例讲解PHP面向对象之多态
2014/08/20 PHP
浅谈laravel aliases别名的原理
2019/10/24 PHP
js 深拷贝函数
2008/12/04 Javascript
jQuery 文本框得失焦点的简单实例
2014/02/19 Javascript
浅谈JavaScript function函数种类
2014/12/29 Javascript
jQuery实现流动虚线框的方法
2015/01/29 Javascript
Bootstrap模态对话框的简单使用
2016/04/29 Javascript
jQuery如何解决IE输入框不能输入的问题
2016/10/08 Javascript
表单元素值获取方式js及java方式的简单实例
2016/10/15 Javascript
利用js+css+html实现固定table的列头不动
2016/12/08 Javascript
jQuery插件HighCharts绘制2D半圆环图效果示例【附demo源码下载】
2017/03/09 Javascript
jQuery实现在HTML文档加载完毕后自动执行某个事件的方法
2017/05/08 jQuery
Vue.extend构造器的详解
2017/07/17 Javascript
vue中的计算属性的使用和vue实例的方法示例
2017/12/04 Javascript
详解如何在项目中使用jest测试react native组件
2018/02/09 Javascript
vue路由拦截及页面跳转的设置方法
2018/05/24 Javascript
Vue 让元素抖动/摆动起来的实现代码
2018/05/31 Javascript
微信小程序实现展示评分结果功能
2019/02/15 Javascript
Vue+Node实现商品列表的分页、排序、筛选,添加购物车功能详解
2019/12/07 Javascript
在Vue中获取自定义属性方法:data-id的实例
2020/09/09 Javascript
react-intl实现React国际化多语言的方法
2020/09/27 Javascript
python编程开发之类型转换convert实例分析
2015/11/13 Python
Python单元和文档测试实例详解
2019/04/11 Python
python轮询机制控制led实例
2020/05/03 Python
Python实现播放和录制声音的功能
2020/08/12 Python
美体小铺英国官网:The Body Shop英国
2017/01/24 全球购物
留学推荐信写作指南
2014/01/25 职场文书
甜点店创业计划书
2014/01/27 职场文书
试用期自我鉴定范文
2014/03/20 职场文书
领导班子个人对照检查材料(群众路线)
2014/09/26 职场文书
mysq启动失败问题及场景分析
2021/07/15 MySQL
Python 数据可视化工具 Pyecharts 安装及应用
2022/04/20 Python
MySQL存储过程及语法详解
2022/08/05 MySQL