Vue.js:使用Vue-Router 2实现路由功能介绍


Posted in Javascript onFebruary 22, 2017

注意: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中,使用的是<a v-link="{path:'/index'}"></a>

在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')

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
js动画效果制件让图片组成动画代码分享
Jan 14 Javascript
js实现页面跳转重定向的几种方式
May 29 Javascript
node.js中的path.join方法使用说明
Dec 08 Javascript
全面解析多种Bootstrap图片轮播效果
May 27 Javascript
相册展示PhotoSwipe.js插件实现
Aug 25 Javascript
js前端实现多图图片上传预览的两个方法(推荐)
Nov 18 Javascript
实例解析jQuery工具函数
Dec 01 Javascript
Bootstrap3 模态框使用实例
Feb 22 Javascript
JS实现的添加弹出层并完成锁屏操作示例
Apr 07 Javascript
JS引用传递与值传递的区别与用法分析
Jun 01 Javascript
微信小程序实现两个页面传值的方法分析
Dec 11 Javascript
JavaScript常用工具方法封装
Feb 12 Javascript
svg动画之动态描边效果
Feb 22 #Javascript
jQuery实现的简单拖动层示例
Feb 22 #Javascript
Bootstrap 3 进度条的实现
Feb 22 #Javascript
easy ui datagrid 从编辑框中获取值的方法
Feb 22 #Javascript
canvas 绘制圆形时钟
Feb 22 #Javascript
jquery实现数字输入框
Feb 22 #Javascript
微信小程序 开发之滑块视图容器(swiper)详解及实例代码
Feb 22 #Javascript
You might like
php计算税后工资的方法
2015/07/28 PHP
PHP反射原理与用法深入分析
2019/09/28 PHP
jQuery 图像裁剪插件Jcrop的简单使用
2009/05/22 Javascript
通过javascript的匿名函数来分析几段简单有趣的代码
2010/06/29 Javascript
javascript针对DOM的应用实例(一)
2012/04/15 Javascript
JavaScript中的继承方式详解
2015/02/11 Javascript
JS获取表格内指定单元格html内容的方法
2015/03/31 Javascript
JavaScript与HTML的结合方法详解
2015/11/23 Javascript
jquery彩色投票进度条简单实例演示
2020/07/23 Javascript
js实现上传图片及时预览
2016/05/07 Javascript
js实现添加可信站点、修改activex安全设置,禁用弹出窗口阻止程序
2016/08/17 Javascript
Angular中$cacheFactory的作用和用法实例详解
2016/08/19 Javascript
如何利用JSHint减少JavaScript的错误
2016/08/23 Javascript
javascript数组对象常用api函数小结(连接,插入,删除,反转,排序等)
2016/09/20 Javascript
js实现一个可以兼容PC端和移动端的div拖动效果实例
2016/12/09 Javascript
JS实现的驼峰式和连字符式转换功能分析
2016/12/21 Javascript
vue-infinite-loading2.0 中文文档详解
2018/04/08 Javascript
zepto.js 实时监听输入框的方法
2018/12/04 Javascript
使用webpack/gulp构建TypeScript项目的方法示例
2019/12/18 Javascript
JavaScript实现点击切换功能
2021/01/27 Javascript
windows下python模拟鼠标点击和键盘输示例
2014/02/28 Python
Python实例一个类背后发生了什么
2016/02/09 Python
一个基于flask的web应用诞生 flask和mysql相连(4)
2017/04/11 Python
Python正确重载运算符的方法示例详解
2017/08/27 Python
python实现输入数字的连续加减方法
2018/06/22 Python
python实现爬取图书封面
2018/07/05 Python
使用python实现快速搭建简易的FTP服务器
2018/09/12 Python
python多线程案例之多任务copy文件完整实例
2019/10/29 Python
Python数据相关系数矩阵和热力图轻松实现教程
2020/06/16 Python
python中remove函数的踩坑记录
2021/01/04 Python
加拿大女鞋品牌:ALDO
2016/11/13 全球购物
梅西百货澳大利亚:Macy’s Australia
2017/07/26 全球购物
澳大利亚波希米亚风时尚品牌:Tree of Life
2019/09/15 全球购物
教学评估实施方案
2014/03/16 职场文书
2015年事业单位工作总结
2015/04/27 职场文书
我国拿下天问一号火星着陆区附近 22 个地理实体命名:平乐、西柏坡、古田、漠河等
2022/04/29 数码科技