指南
基础
- 安装
- 介绍
- 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
元属性的示例。