指南
基础
- 安装
- 介绍
- Vue 实例
- 模板语法
- 计算属性和侦听器
- 类和样式绑定
- 条件渲染
- 列表渲染
- 事件处理
- 表单输入绑定
- 组件基础
组件深入
- 组件注册
- 道具
- 自定义事件
- 插槽
- 动态和异步组件
- 处理边缘情况
过渡和动画
- 进入/离开和列表过渡
- 状态过渡
可重用性和组合
- 混入
- 自定义指令
- 渲染函数和 JSX
- 插件
- 过滤器
工具
- 单文件组件
- 测试
- TypeScript 支持
- 生产部署
扩展
- 路由
- 状态管理
- 服务器端渲染
- 安全
内部机制
- 深入响应性
迁移
- 从 Vue 1.x 迁移
- 从 Vue Router 0.7.x 迁移
- 从 Vuex 0.6.x 迁移到 1.0
- 迁移到 Vue 2.7
元数据
- 与其他框架的比较
- 加入 Vue.js 社区!
- 认识团队
从 Vue Router 0.7.x 迁移
只有 Vue Router 2 与 Vue 2 兼容,因此如果您要更新 Vue,您也必须更新 Vue Router。这就是为什么我们在主文档中包含了有关迁移路径的详细信息。有关使用新 Vue Router 的完整指南,请参阅Vue Router 文档。
路由初始化
router.start 已替换
不再有特殊的 API 用于使用 Vue Router 初始化应用程序。这意味着,您不再需要
|
您将路由属性传递给 Vue 实例
|
或者,如果您使用的是 Vue 的运行时构建版本
|
升级路径
在您的代码库上运行迁移助手以查找 router.start 被调用的示例。
路由定义
router.map 已替换
路由现在被定义为在路由实例化时在 routes 选项 上的数组。例如,这些路由
|
将改为使用以下方式定义
|
数组语法允许更可预测的路由匹配,因为迭代对象不能保证在所有浏览器中使用相同的属性顺序。
升级路径
在您的代码库上运行迁移助手以查找 router.map 被调用的示例。
router.on 已移除
如果您需要在启动应用程序时以编程方式生成路由,您可以通过将定义动态推送到路由数组来实现。例如
|
如果您需要在路由实例化后添加新的路由,您可以用包含您要添加的路由的新匹配器替换路由的匹配器
|
升级路径
在您的代码库上运行迁移助手以查找 router.on 被调用的示例。
router.beforeEach 已更改
router.beforeEach 现在可以异步工作,并以 next 函数作为其第三个参数。
|
|
subRoutes 已重命名
重命名为 children 以保持 Vue 内部和与其他路由库的一致性。
升级路径
在您的代码库上运行迁移助手以查找 subRoutes 选项的示例。
router.redirect 已替换
这现在是 路由定义上的选项。例如,您将更新
|
到您 routes 配置中类似于以下的定义
|
升级路径
在您的代码库上运行迁移助手以查找 router.redirect 被调用的示例。
router.alias 已替换
这现在是 您要别名到的路由定义上的选项。例如,您将更新
|
到您 routes 配置中类似于以下的定义
|
如果您需要多个别名,您也可以使用数组语法
|
升级路径
在您的代码库上运行迁移助手以查找 router.alias 被调用的示例。
任意路由属性 已替换
任意路由属性现在必须在新的 meta 属性下进行作用域,以避免与未来功能发生冲突。例如,如果您定义了
|
那么您现在将更新为
|
然后,在以后访问路由上的此属性时,您仍然会通过 meta 进行访问。例如
|
升级路径
在您的代码库上运行迁移助手以查找未在 meta 下作用域的任意路由属性的示例。
[] 查询中数组的语法 已移除
将数组传递给查询参数时,QueryString 语法不再是 /foo?users[]=Tom&users[]=Jerry,而是 /foo?users=Tom&users=Jerry。在内部,$route.query.users 仍然是一个数组,但如果查询中只有一个参数:/foo?users=Tom,则在直接访问此路由时,路由无法知道我们是否期望 users 是一个数组。因此,请考虑添加一个计算属性,并用它替换 $route.query.users 的所有引用
|
路由匹配
路由匹配现在使用 path-to-regexp 作为底层实现,使其比以前灵活得多。
一个或多个命名参数 已更改
语法略有更改,因此例如 /category/*tags 应更新为 /category/:tags+。
升级路径
在您的代码库上运行迁移助手以查找过时的路由语法的示例。
链接
v-link 已替换
v-link 指令已被新的 <router-link> 组件 替换,因为这种类型的任务现在完全由 Vue 2 中的组件负责。这意味着无论何时何地您都有一个像这样的链接
|
您需要像这样更新它
|
请注意,target="_blank" 在 <router-link> 上不受支持,因此如果您需要在新标签页中打开链接,则必须使用 <a>。
升级路径
在您的代码库上运行 迁移助手 以查找 v-link 指令的示例。
v-link-active 已替换
v-link-active 指令也被 <router-link> 组件 上的 tag 属性替换。例如,您将更新此
|
到这个
|
<a> 将是实际的链接(并将获得正确的 href),但活动类将应用于外部 <li>。
升级路径
在您的代码库上运行 迁移助手 以查找 v-link-active 指令的示例。
编程导航
router.go 已更改
为了与 HTML5 History API 保持一致,router.go 现在仅用于 后退/前进导航,而 router.push 用于导航到特定页面。
升级路径
在您的代码库上运行 迁移助手 以查找 router.go 被使用的地方,而应该使用 router.push。
路由选项:模式
hashbang: false 已删除
Google 不再需要哈希邦来抓取 URL,因此它们不再是哈希策略的默认值(甚至不是选项)。
升级路径
在您的代码库上运行 迁移助手 以查找 hashbang: false 选项的示例。
history: true 已替换
所有路由模式选项已合并到单个 mode 选项 中。更新
|
到
|
升级路径
在您的代码库上运行 迁移助手 以查找 history: true 选项的示例。
abstract: true 已替换
所有路由模式选项已合并到单个 mode 选项 中。更新
|
到
|
升级路径
在您的代码库上运行 迁移助手 以查找 abstract: true 选项的示例。
路由选项:其他
saveScrollPosition 已替换
这已被 scrollBehavior 选项 替换,该选项接受一个函数,以便滚动行为完全可定制 - 甚至可以按路由定制。这打开了更多新的可能性,但要复制旧行为
|
您可以用它替换
|
升级路径
在您的代码库上运行 迁移助手 以查找 saveScrollPosition: true 选项的示例。
root 已重命名
为了与 HTML <base> 元素 保持一致,已重命名为 base。
升级路径
在您的代码库上运行 迁移助手 以查找 root 选项的示例。
transitionOnLoad 已删除
现在不再需要此选项,因为 Vue 的过渡系统具有明确的 appear 过渡控制。
升级路径
在您的代码库上运行 迁移助手 以查找 transitionOnLoad: true 选项的示例。
suppressTransitionError 已删除
由于钩子简化而删除。如果您确实必须抑制过渡错误,可以使用 try…catch。
升级路径
在您的代码库上运行 迁移助手 以查找 suppressTransitionError: true 选项的示例。
路由钩子
activate 已替换
在组件中使用 beforeRouteEnter。
升级路径
在您的代码库上运行 迁移助手 以查找 activate 钩子的示例。
canActivate 已替换
在路由中使用 beforeEnter。
升级路径
在您的代码库上运行 迁移助手 以查找 canActivate 钩子的示例。
deactivate 已删除
使用组件的 beforeDestroy 或 destroyed 钩子。
升级路径
在您的代码库上运行 迁移助手 以查找 deactivate 钩子的示例。
canDeactivate 已替换
在组件中使用 beforeRouteLeave。
升级路径
在您的代码库上运行 迁移助手 以查找 canDeactivate 钩子的示例。
canReuse: false 已删除
在新 Vue Router 中不再有此用例。
升级路径
在您的代码库上运行 迁移助手 以查找 canReuse: false 选项的示例。
data 已替换
$route 属性现在是响应式的,因此您可以使用观察者来响应路由更改,例如
|
升级路径
在您的代码库上运行 迁移助手 以查找 data 钩子的示例。
$loadingRouteData 已删除
定义您自己的属性(例如 isLoading),然后在路由上的观察者中更新加载状态。例如,如果使用 axios 获取数据
|
升级路径
在您的代码库上运行 迁移助手 以查找 $loadingRouteData 元属性的示例。