回头看 vue-router 复习

我的github iSAM2016

目录

中途有一段时间去隔壁家的php玩了一遭,回头看来,vuex、vue-router有了改变,一开始就对vue-route的细节不是很了解,今天总结一下。

官网的例子:

自己的一句话:

  1. 定义路由组件(汽车)

    const Foo = { template: '

    foo

    ' }

    const Bar = { template: '

    bar

    '

  2. 定义路由(公路或导航)

    cost ruter = {

    { path: '/foo', component: Foo },

    { path: '/bar', component: Bar }

    }

  3. 创建实例(红路灯)

    cosnt app = new Vue({

    router}).$mount('#app')

动态的路由匹配

一个页面是经常重复使用的,传递一个参数就可以了,比如传递一个ID号baidu.com?userId=123,这样

就需要一个动态的路由来解决。

cost ruter = {
{ path: '/user:12', component: user }
}

当一个路由使用是后面有动态的参数,会映射到this.$router.param 中,这是函数体内调用路由的方法

响应路由参数的变化

>因为没有仔细看官网的实例,这点没有看待,我遇到一次坑。这次教训并不是粗心,是因为没有仔细看文档的好习惯,这个不好的习惯必须的改。就像数学老师说的回归到基本理论

这也是一个常见的问题,我问需要监听hash值的改变,来查询参数如:

  • book/search?cat=1
  • book/search?cat=2

可是只有参数发生了改变,vue-router 认为组件式可以重用的,参数变化是不能引起从新向服务器获取数据

const user = {
wacth: {
'$route' (to, from) {
// 对路由变化作出响应...
}
}
}

嵌套路由

像这样的的嵌套 /user/foo/profile
```

```
````是最顶层的出口,渲染最高级路由匹配到的组件。同样地,一个被渲染
组件同样可以包含自己的嵌套 。例如,在 User 组件的模板添加一个
路由的层级关系在router中的体现


const router = new VueRouter({
routes: [
{ path: '/user/:id', component: User,
children: [
// UserHome will be rendered inside User's <router-view>
// when /user/:id is matched
{ path: '', component: UserHome }, // UserProfile will be rendered inside User's <router-view>
// when /user/:id/profile is matched
{ path: 'profile', component: UserProfile }, // UserPosts will be rendered inside User's <router-view>
// when /user/:id/posts is matched
{ path: 'posts', component: UserPosts }
]
}
]
})

函数式导航

**注意 this.$route 和 this.router在使用上是有区别的**

this.$router.push()
    调用的方法
// 字符串
this.$router.push('home') // 对象
this.$router.push({ path: 'home' }) // 命名的路由
this.$router.push({ name: 'user', params: { userId: 123 }}) // 带查询参数,变成 /register?plan=private
this.$router.push({ path: 'register', query: { plan: 'private' }})
this.$router.go(n)

意思是在 history 记录中向前或者后退多少步

路由的命名

可以为路由设置,别名方便使用。如设置name, isshow

    const router = new VueRouter({
routes: [
{
path: '/user/:userId',
name: 'user',
isShow: false
component: User
}
]
})
路由的命名:示例

切换路由的时候可以修改页面的标题

router.afterEach(transition => {
document.title = transition.name
})

导航钩子

导航钩子

全局钩子
const router = new VueRouter({ ... })

router.beforeEach((to, from, next) => {
// ...
})

主要用来拦截导航,让他完成跳转或取消。

参数:

to :Route: 标识即将进入的目标路由对象

from: Route 当前导航正要离开的路由

next: function 调用该方法来resolve 钩子,它的参数:

  • next(): 进行管道中的下一个钩子
  • next(false): 中断当前的导航
  • next('/') 或者 next({ path: '/' }): 跳转到一个不同的地址。当前的导航被中断,然后进行一个新的导航。
实例:检测用户登录

全局的钩子主要用来是,判断用户是否登录
```
router.beforeEach((to, from, next) => {
//页面滚动到顶部
window.scroll(0, 0);
//用户没有登录了,并且还想访问别的页面,强制跳转login页
if (!auth.login() && to.path !== '/login') {
next('login');
} else {
//用户已经登录了,不在让用户访问login页
if (auth.login() && to.path === '/login') {
next({
path: '/demo/user/list'
});
} else {
next();
}
}
})
```

某个路由独享的钩子(VIP组件)
 const router = new VueRouter({
routes: [
path: '/foo',
component: Foo,
beforeEach: (to, from, next) => { }
]
})

路由元信息

>较难理解

我们称呼routers 配置中的每个路由对象为路由记录。路由记录可以是嵌套的。比如

http://localhost:3000/#/demo/user/list

这个地址中可以说明路由记录有三个,分别是:

  • /demo
  • /demo/use
  • /demo/use/list





一个路由匹配到的多有路由记录暴露在$route对象当中的$route.matched 数组当中,我们需要遍历 $route.matched 来检查路由记录中的 meta 字段。

示例

路由对象信息

对象出现的地方,注意是route **没有r结尾**

route Object出现的地方
router.match(location)
this.$route
全局钩子

对象的属性就不书写了见路由信息对象的属性

Router 实例

Router注意是 **有r结尾**
[Router 实例属性](http://router.vuejs.org/zh-cn/api/router-instance.html)

$router.options

在$router 中有个鬼是$router.options 官网没有找到,说明。
这个属性包含了路由的树形结构,可以借助这个来实现menu层级的划分





回头看 vue-router的更多相关文章

  1. 深入浅出的webpack4构建工具---webpack+vue+router 按需加载页面(十五)

    1. 为什么需要按需加载? 对于vue单页应用来讲,我们常见的做法把页面上所有的代码都打包到一个bundle.js文件内,但是随着项目越来越大,文件越来越多的情况下,那么bundle.js文件也会越来 ...

  2. python 全栈开发,Day91(Vue实例的生命周期,组件间通信之中央事件总线bus,Vue Router,vue-cli 工具)

    昨日内容回顾 0. 组件注意事项!!! data属性必须是一个函数! 1. 注册全局组件 Vue.component('组件名',{ template: `` }) var app = new Vue ...

  3. 每日技术总结:vue router传参方式,js获取设备高度

    今天貌似没什么问题,23333…… 1.vue router 路由传参的方式 应用情景:从分类页(category.vue)进入商品列表页(list.vue),需要传递商品分类id(catId),商品 ...

  4. Vue Router的官方示例改造

    基于Vue Router 2018年8月的官方文档示例,改造一下,通过一个最简单的例子,解决很多初学者的一个困惑. 首先是官方文档示例代码 <!DOCTYPE html> <html ...

  5. [Vue 牛刀小试]:第十三章 - Vue Router 基础使用再探(命名路由、命名视图、路由传参)

    一.前言 在上一章的学习中,我们简单介绍了前端路由的概念,以及如何在 Vue 中通过使用 Vue Router 来实现我们的前端路由.但是在实际使用中,我们经常会遇到路由传参.或者一个页面是由多个组件 ...

  6. vue Router——进阶篇

    vue Router--基础篇 1.导航守卫 正如其名,vue-router 提供的导航守卫主要用来通过跳转或取消的方式守卫导航.有多种机会植入路由导航过程中:全局的, 单个路由独享的, 或者组件级的 ...

  7. vue Router——基础篇

    vue--Router简介 vue-router是Vue.js官方的路由插件,它和vue.js是深度集成的,适合用于构建单页面应用. vue的单页面应用是基于路由和组件的,路由用于设定访问路径,并将路 ...

  8. 从源码看 Vue 中的 Mixin

    最近在做项目的时候碰到了一个奇怪的问题,通过 Vue.mixin 方法注入到 Vue 实例的一个方法不起作用了,后来经过仔细排查发现这个实例自己实现了一个同名方法,导致了 Vue.mixin 注入方法 ...

  9. vue router 如何使用params query传参,以及有什么区别

    写在前面: 传参是前端经常需要用的一个操作,很多场景都会需要用到上个页面的参数,本文将会详细介绍vue router 是如何进行传参的,以及一些小细节问题.有需要的朋友可以做一下参考,喜欢的可以点波赞 ...

随机推荐

  1. JSP自定义标签的使用简化版

    在jsp中 如果不想页面中出现java代码 这个时候就需要使用到jsp的自定义标签库技术了 自定义标签库 能够有效的减少jsp中java代码的出现 使其更加自然的像html页面一样 如果要使用jsp自 ...

  2. 『嗨威说』算法设计与分析 - STL中Sort函数的实现原理初探

    本文索引目录: 一.对Sort算法实现的个人阅读体会 二.Sort算法使用的三个排序算法的优点介绍 2.1 插入排序的优缺点 2.2 堆排序的优缺点 2.3 快速排序的优缺点 2.4 新的结合排序—— ...

  3. JsonMessageView工具类

    前言 工具类 示例: 前端发送ajax请求 springmvc控制层接收请求并处理请求     前言: 在工作中使用springmvc web框架时常常会发送一个ajax请求,我们在控制层接收到请求并 ...

  4. 【主动学习】Variational Adversarial Active Learning

    本文记录了博主阅读ICCV2019一篇关于主动学习论文的笔记,第一篇博客,以后持续更新哈哈 论文题目:<Variational AdVersarial Active Learning> 原 ...

  5. SpannableString与SpannableStringBuilder

    一.概述 1.SpannableString.SpannableStringBuilder与String的关系 首先SpannableString.SpannableStringBuilder基本上与 ...

  6. 解决MVC中Model上的特性在EF框架刷新时清空的问题

    MVC中关于前端数据的效验一般都是通过在Model中相关的类上打上特性来实现. 但是在我们数据库发生改变,EF框架需要刷新时会把我们在Model上的特性全部清除,这样的话,我们前端的验证就会失效. 因 ...

  7. (八十五)c#Winform自定义控件-引用区块

    前提 入行已经7,8年了,一直想做一套漂亮点的自定义控件,于是就有了本系列文章. GitHub:https://github.com/kwwwvagaa/NetWinformControl 码云:ht ...

  8. C#基于Quartz.NET实现任务调度并部署Windows服务

    一.Quartz.NET介绍 Quartz.NET是一个强大.开源.轻量的作业调度框架,是 OpenSymphony 的 Quartz API 的.NET移植,用C#改写,可用于winform和asp ...

  9. Web高性能动画及渲染原理(1)CSS动画和JS动画

    目录 一. CSS动画 和 JS动画 1.1 CSS动画 1.2 JS动画 1.3 小结 二. 使用Velocity.js实现动画 示例代码托管在:http://www.github.com/dash ...

  10. Embarrassment

    I don't know what I did wrong, why do I take care of me? I did something wrong before, your parents ...