2.x 版本的 vue-router 相比之前的0.7.x版本,有很多破坏性改变:

通用 API 的修改

  • The old router.go() is now router.push() .

  • 新的 router.go 类似 window.history.go() : 接受一个数值作为参数在历史栈中导航

  • 新增的方法:

    • router.back()

    • router.forward()

路由配置

所有路由配置都通过一个单独的对象传到 Router 的构造函数。所以可用的选项,参见 configuration object's type declaration 。

routes 选项取代了 router.map() 。此外,路由配置现在用数组而不是用对象哈希表来作为数据结构。这保证了一致的匹配次序(对象键值枚举的次序是依赖游览器的)。

这里 是一个新的配置语法的例子.

以下的路由器实例化选项被作废了:

  • history (被 mode 取代)

  • abstract (被 mode 取代)

  • root (被 base 取代)

  • saveScrollPosition (被 scrollBehavior 取代,后者用起来更加灵活,下面会提到)

  • hashbang (因为 hashbang 在Google爬站的时候不在需要,所以移除了此选项)

  • transitionOnLoad (因为 Vue 2.0 有显式的视觉表现过渡动画控制,所以此选项移除)

  • suppressTransitionError (因为钩子函数的系统的简化而移除)

新的 mode 选项取值为: (默认是 "hash"):

  • "abstract"

  • "hash"

  • "history"

在不支持 history.pushState 的浏览器中, 路由器会自动回退为 hash 模式.

下列方法已经作废:

  • router.map (被 routes 选项取代)

  • router.beforeEach (被 beforeEach 选项取代,不过 beta2中有修改,见下面)

  • router.afterEach (被 afterEach 选项取代,不过 beta2中有修改,见下面)

  • router.redirect (现在可以在 routes 中直接声明, 参见 Example )

  • router.alias (现在可以在 routes 配置中直接声明, 参见 Example )

Beta 2 中, beforeEach 和 afterEach 又被改回成为 router 的实例方法。这可以让插件和模块更加方便的在 router 实例创建后增加hooks。

导航的钩子函数

钩子系统被极大简化,所有0.7的迁移钩子都作废了,下面是替代方案:

  • 使用组件自身的生命周期钩子函数来替代 activate 和 deactivate

  • 在 $router 上使用 watcher 来响应路由改变 (e.g. 比如基于新的路由参数获取数据 - Example )

  • canActivate 可以被router 的配置中的 beforeEnter 中实现 Example

  • canDeactivate 已经被 beforeRouteLeave 取代, 后者在一个组件的根级定义中指定。这个钩子函数在调用时是将组件的实例作为其上下文的。 Example

  • canReuse 已经被移除,因其容易混淆且很少被用到。

此外,在2.0版本中所有的钩子函数都有相同简洁的签名:

guard (toRoute, redirect, next) {
// call redirect to redirect to another route
// call next to confirm current route
// or do nothing to cancel the navigation
}

这些函数也不再支持返回 Promises.

链接(Links)

v-link 指令已经被 <router-link> 组件替代. 这个组件接受以下属性参数:

  • to : 一个路径字符串, 或者一个对象 location descriptor .

  • tag : 渲染成的 html 元素类型,默认是 <a> .

  • exact : 用于控制当前激活项的行为.

  • append : 控制相对链接路径的追加方式

  • replace : 替代而不是作为历史条目压榨

  • active-class : 当链接项激活时增加的 CSS 样式

这里有个 复杂的例子 展示了 <router-link> 的用法。

命名视图 (Named Views)

单个路由现在可以映射到多个命名组件。这些组件将会在渲染在对应命名的多个 <router-view> 中. Example

滚动行为(Scroll Behavior)

scrollBehavior 选项接受一个函数,返回在路由导航时页面如何滚动的规则。你可以代码控制是否要滚动的页面顶部、书签或者在状态中保存的位置。 Example

Beta2 版本中又对 scrollBehavior 做了修改:

beta.1 中返回 { hash: true } 来滚动到一个锚点,现在返回的是 { selector: route.hash }。这也同时意味着你可以返回任意的 CSS 选择器,来匹配成要滚动到的目标。

此外,你还可以返回 { selector: '...', x: 0, y: 0 } ,这让路由器首先尝试滚动到匹配的元素,如果没有找到匹配元素,那就滚动到 x 和 y 指定的位置。

vue-router 2.0 改变的内容的更多相关文章

  1. Vue 2.0 + Vue Router + Vuex

    用 Vue.js 2.x 与相配套的 Vue Router.Vuex 搭建了一个最基本的后台管理系统的骨架. 当然先要安装 node.js(包括了 npm).vue-cli 项目结构如图所示: ass ...

  2. 前端MVC Vue2学习总结(八)——Vue Router路由、Vuex状态管理、Element-UI

    一.Vue Router路由 二.Vuex状态管理 三.Element-UI Element-UI是饿了么前端团队推出的一款基于Vue.js 2.0 的桌面端UI框架,手机端有对应框架是 Mint U ...

  3. 深入浅出的webpack构建工具--webpack4+vue+router项目架构(十四)

    阅读目录 一:vue-router是什么? 二:vue-router的实现原理 三:vue-router使用及代码配置 四:理解vue设置路由导航的两种方法. 五:理解动态路由和命名视图 六:理解嵌套 ...

  4. vue Router——进阶篇

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

  5. 「进阶篇」Vue Router 核心原理解析

    前言 此篇为进阶篇,希望读者有 Vue.js,Vue Router 的使用经验,并对 Vue.js 核心原理有简单了解: 不会大篇幅手撕源码,会贴最核心的源码,对应的官方仓库源码地址会放到超上,可以配 ...

  6. 窥探Vue.js 2.0

    title: 窥探Vue.js2.0 date: 2016-09-27 10:22:34 tags: vue category: 技术总结 --- 窥探Vue.js2.0 令人兴奋的Vue.js 2. ...

  7. Vue.js 2.0 和 React、Augular

    Vue.js 2.0 和 React.Augular 引言 这个页面无疑是最难编写的,但也是非常重要的.或许你遇到了一些问题并且先前用其他的框架解决了.来这里的目的是看看Vue是否有更好的解决方案.那 ...

  8. Vue.js 2.x笔记:路由Vue Router(6)

    1. Vue Router简介与安装 1.1 Vue Router简介 Vue Router 是 Vue.js 官方的路由管理器.它和 Vue.js 的核心深度集成,构建单页面应用. Vue Rout ...

  9. vue cli 3.0创建项目

    .npm i -g @vue/cli .vue create my-project 此处有两个选择: 1.default (babel, eslint)默认套餐,提供babel和eslint支持 2. ...

随机推荐

  1. nfs 文件共享 服务

    需要rpc服务: [root@xujiaxuan ftp]# service rpcbind start[root@xujiaxuan ftp]# chkconfig rpcbind on 设置开机自 ...

  2. 用selenium 模块控制浏览器

    11.8 用selenium 模块控制浏览器selenium 模块让Python 直接控制浏览器,实际点击链接,填写登录信息,几乎就像是有一个人类用户在与页面交互.与Requests 和Beautif ...

  3. Network——物理层-练习题与解答

    1. 无线电天线通常在其直径等于无线电波的波长的情况下工作效果最好.合理的天线直径的范围是从1厘米到5米.问所覆盖的频率范围是怎样的? 解答: λf = c , c=3x108 (m/s) 对于λ=1 ...

  4. Memcached内存缓存技术

    Memcached是什么,有什么作用? Memcached是一个开源的.高性能的内存缓存软件,从名称上看Mem就是内存的意思,而Cache就是缓存的意思. Memcached通过在事先规划好的内存空间 ...

  5. y=y||'world'与y=y?y:'world'

    1.y=y||’world’ function log(x,y){ y=y||’world’; console.log(x,y) } log(‘hello’)===>hello world lo ...

  6. Majority Element——算法课上的一道题(经典)

    Given an array of size n, find the majority element. The majority element is the element that appear ...

  7. 使用JAXB读写xml

    1.注解 在Java模型中的创建与 xml 文件对应的节点和属性需要用注解来表示 @XmlRootElement 作用:将一个Java类映射为一段XML的根节点参数:    name  定义这个根节点 ...

  8. es6中对象的一些操坐

    变量的赋值 key值得构建 对象的严格检测 对象的合并 1.变量的赋值: let name='宋宇',age='17岁': let obj={name,age} //快速的将变量引入到对象中去. 2. ...

  9. lr中exit(-1)和return 0的区别

    LR脚本实践:关于lr中exit(-1)和return 0的区别 exit(-1):从当前action里面exit(-1)所在行,当前迭代里面直接退出来,终止运行: return 0:忽略当前acti ...

  10. CentOS 7 上搭建 ownCloud 私有云

    所需软件 & 环境 操作系统:CentOS 7.3.1711 最小安装 (已关闭 SELinux 和防火墙) 应用软件: Nginx  .MariaDB  .PHP  .ownCloud 10 ...