使用Vue-Router 2实现路由功能实例详解


Posted in Javascript onNovember 14, 2017

vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用。vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路径和组件映射起来。传统的页面应用,是用一些超链接来实现页面切换和跳转的。在vue-router单页面应用中,则是路径之间的切换,也就是组件的切换。

注意: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 1中,使用的是

在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-Router 2实现路由功能实例详解,希望对大家有所帮助,如果大家有任何疑问请给我留言,小编会及时回复大家的。在此也非常感谢大家对三水点靠木网站的支持!

Javascript 相关文章推荐
js 完美图片新闻轮转效果,腾讯大粤网首页图片轮转改造而来
Nov 21 Javascript
js+JQuery返回顶部功能如何实现
Dec 03 Javascript
Webpack 实现 AngularJS 的延迟加载
Mar 02 Javascript
dedecms页面如何获取会员状态的实例代码
Mar 15 Javascript
AngularJS在IE下取数据总是缓存问题的解决方法
Aug 05 Javascript
基于jQuery实现发送短信验证码后的倒计时功能(无视页面关闭)
Sep 02 Javascript
es6中的解构赋值、扩展运算符和rest参数使用详解
Sep 28 Javascript
教你如何用node连接redis的示例代码
Jul 12 Javascript
微信小程序表单弹窗实例
Jul 19 Javascript
vue-router两种模式区别及使用注意事项详解
Aug 01 Javascript
Vue作用域插槽实现方法及作用详解
Jul 08 Javascript
uin-app+mockjs实现本地数据模拟
Aug 26 Javascript
JS 仿支付宝input文本输入框放大组件的实例
Nov 14 #Javascript
js实现数组内数据的上移和下移的实例
Nov 14 #Javascript
vue router使用query和params传参的使用和区别
Nov 13 #Javascript
vue+vue-validator 表单验证功能的实现代码
Nov 13 #Javascript
jQuery除指定区域外点击任何地方隐藏DIV功能
Nov 13 #jQuery
Angular实现表单验证功能
Nov 13 #Javascript
mescroll.js上拉加载下拉刷新组件使用详解
Nov 13 #Javascript
You might like
php下载远程大文件(获取远程文件大小)的实例
2017/06/17 PHP
Javascript select下拉框操作常用方法
2009/11/09 Javascript
jQuery中对节点进行操作的相关介绍
2013/04/16 Javascript
$.getJSON在IE下失效的原因分析及解决方法
2013/06/16 Javascript
简单漂亮的js弹窗可自由拖拽且兼容大部分浏览器
2013/10/22 Javascript
JS JSON对象转为字符串的简单实现方法
2013/11/18 Javascript
jquery中html、val与text三者属性取值的联系与区别介绍
2013/12/29 Javascript
javascript中setTimeout和setInterval的unref()和ref()用法示例
2014/11/26 Javascript
js简单实现标签云效果实例
2015/08/06 Javascript
JS鼠标拖拽实例分析
2015/11/23 Javascript
JavaScript来实现打开链接页面的简单实例
2016/06/02 Javascript
Javascript获取随机数的实现方法
2016/06/22 Javascript
JS实现将Asp.Net的DateTime Json类型转换为标准时间的方法
2016/08/02 Javascript
HTML Table 空白单元格补全的简单实现
2016/10/13 Javascript
让div运动起来 js实现缓动效果
2017/07/06 Javascript
Angular实现下拉框模糊查询功能示例
2018/01/03 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
JS画布动态实现黑客帝国背景效果
2020/11/08 Javascript
详解Python判定IP地址合法性的三种方法
2018/03/06 Python
PyCharm设置SSH远程调试的方法
2018/07/17 Python
Python数据集切分实例
2018/12/08 Python
python 将字符串中的数字相加求和的实现
2019/07/18 Python
乐高积木玩具美国官网:LEGO Shop US
2016/09/16 全球购物
美国在线打印网站:Overnight Prints
2018/10/11 全球购物
丝芙兰意大利官方网站:Sephora.it
2019/12/13 全球购物
瑞士首家网上药店折扣店:McDrogerie
2020/12/22 全球购物
你所知道的集合类都有哪些?主要方法?
2012/12/31 面试题
护士自我鉴定怎么写
2014/02/07 职场文书
销售职业生涯规划范文
2014/03/14 职场文书
社区党务公开实施方案
2014/03/18 职场文书
网站创业计划书
2014/04/30 职场文书
银行竞聘报告范文
2014/11/06 职场文书
抗洪救灾感谢信
2015/01/22 职场文书
2015年生产车间工作总结
2015/04/22 职场文书
python中如何对多变量连续赋值
2021/06/03 Python
python识别围棋定位棋盘位置
2021/07/26 Python