Vue Router 4.0 正式发布!焕然一新。
今天,Vue Router 4 正式发布稳定版本。
在经历了 14 个 Alpha,13 个 Beta 和 6 个 RC 版本之后,Vue Router v4 闪亮登场,为你带来了 TypeScript 集成、新功能以及对现代应用程序的一致性改进,已经准备好成为 Vue3 新应用的最佳伴侣。
将近 2 年的时间,大约 1500 次提交,15 个RFC[1],无数的心血……以及许多用户的帮助以及他们的错误报告和功能请求。 谢谢大家的帮助!
项目结构优化
Vue Router 现在分为三个模块:
-
History 实现: 处理地址栏,并且特定于 Vue Router 运行的环境(节点,浏览器,移动设备等) -
Router 匹配器:处理类似 /users/:id
的路由解析和 优先级处理。 -
Router: 将一切连接在一起,并处理路由特定功能,例如导航守卫。
动态路由
动态路由[2]是 Vue Router 最受欢迎的功能之一。 它让路由变得更灵活,更强大,让曾经不可能的功能成为了现实!Vue Router4 新增了有自动优先级排名的高级路径解析功能,用户新现在可以以随意的顺序定义路由,因为 Router 会根据 URL 字符串表示来猜测应该匹配的路由。
优先级排名,其实就是根据你路径书写的规则计算出一个得分,根据得分来优先选用最有可能的那一项。
举个例子来说,你同时写了 /users
和 /:w+
这两个路由:
const routes = [
{
path: '/users',
Component: Users
},
{
path: '/:w+',
Component: NotFound
}
]
那么你当然希望在输入 /users
这个更精确的路径的时候,走上面的规则,而下面则作为兜底规则。在旧版的 Vue Router 中需要通过路由声明的顺序来保证这个行为,而新版则无论你怎样放置,都会按照得分系统来计算该匹配哪个路由。
甚至专门有 Path Ranker[3] 这个网页来帮助你计算路由的优先级得分。
在测试用例中,ssh 找到了一个更具体的优先级得分排名,可以先感受一下:
it('works', () => {
checkPathOrder([
'/a/b/c',
'/a/b',
'/a/:b/c',
'/a/:b',
'/a',
'/a-:b-:c',
'/a-:b',
'/a-:w(.*)',
'/:a-:b-:c',
'/:a-:b',
'/:a-:b(.*)',
'/:a/-:b',
'/:a/:b',
'/:w',
'/:w+'
])
})
简单来说,越明确的路由排名越高,越模糊则反之,无关顺序,非常有意思。
改进后的导航系统
新的导航系统更加具有一致性,它改善了滚动行为的体验,使其更加接近原生浏览器的行为。 它还为用户提供了有关导航状态的几乎更多信息,用户可以用这些信息,通过 ProgressBar
和 Modal
之类的全局 UI 元素让用户的体验变得更好。
更强大的 Devtools
多亏了新的Vue Devtools[4],Vue Router 能够和浏览器进行以下更高级的整合。
-
时间轴记录路由变化:
-
完整 route 目录,能够帮助你轻松进行调试:
更好的路由守卫
和next
说拜拜,现在确认跳转不需要再手动执行这个函数了,而是根据你的返回值来决定行为。同样支持异步返回 Promise。
现在的路由守卫 API 更加友好且合理了,可以完美利用 async await
做异步处理,比如这样:
router.beforeEach(async (to, from) => {
// canUserAccess() returns `true` or `false`
return await canUserAccess(to)
})
一致的编码
编码方式(Encoding)做了统一的适配,现在将在不同的浏览器和路由位置属性(params
, query
和 hash
)中保持一致。 作为参数传递给 router.push()
时,不需要做任何编码,在你使用 $route
或 useRoute()
去拿到参数的时候永远是解码(Decoded)的状态。
迁移成本低
Vue Router 4 主要致力于于在改善现有 Router 的同时保持非常相似的 API,如果你已经很上手旧版的 Vue Router 了,那你的迁移会做的很顺利,可以查看文档中的完整迁移指南[5]。
展望未来
在过去的几个月中,Vue Router 一直稳定而且好用,现在它可以做些更好玩的事儿了:
-
使用现有工具(Vetur,Vite,Devtools 等)得到更好的开发体验。 -
与 Suspense 等现代功能更好地集成。 -
RFCs 和社区共同探讨出更好用的 API。 -
开发更轻型的版本。
试试看
等不及想试试 Vue Router 4 了?这里有CodeSandbox[6],还有集成好 Tailwind CSS 的 Vite 模板[7],或使用CLI[8]来开始你的游玩。
想学习 Vue Router 4 的更多先进理念了?请立刻查看我们的新文档[9]。 如果您是现有的 Vue 2.x 用户,请直接转到迁移指南[10]。
“发布地址:https://github.com/vuejs/vue-router-next/releases/tag/v4.0.0
”
参考资料
RFC:https://github.com/vuejs/rfcs/pulls?q=is%3Apr+sort%3Aupdated-desc+label%3Arouter+is%3Aclosed
[2]动态路由:https://next.router.vuejs.org/guide/advanced/dynamic-routing.html
[3]Path Ranker:https://paths.esm.dev/?p=AAMeJVyBwRkJTALagIAOuGrgACU.#
[4]Vue Devtools:https://chrome.google.com/webstore/detail/vuejs-devtools/ljjemllljcmogpfapbkkighbhhppjdbg
[5]完整迁移指南:https://next.router.vuejs.org/guide/migration/index.html
[6]CodeSandbox:https://codesandbox.io/s/vue-router-4-reproduction-hb9lh
[7]集成好 Tailwind CSS 的 Vite 模板:https://vite-tailwind.esm.dev/about
[8]CLI:https://cli.vuejs.org/
[9]新文档:https://next.router.vuejs.org/
[10]迁移指南:https://next.router.vuejs.org/guide/migration/index.html#breaking-changes
相关阅读
感谢大家
1.如果觉得这篇文章还不错,来个分享、点赞、在看三连吧,这是我创作最大的动力~
2.关注「前端从进阶到入院」,获取我分类整理的自己全网 100w+ 阅读的精选原创面试热点文章,我进入字节、滴滴、百度的小伙伴们说文章中的很多内容对面试帮助很大,希望也能帮助到你。
3. 关注后加我好友,希望能和大家交个朋友。
本文分享自微信公众号 - 前端从进阶到入院(code_with_love)。
如有侵权,请联系 support@oschina.cn 删除。
本文参与“OSC源创计划”,欢迎正在阅读的你也加入,一起分享。

低调大师中文资讯倾力打造互联网数据资讯、行业资源、电子商务、移动互联网、网络营销平台。
持续更新报道IT业界、互联网、市场资讯、驱动更新,是最及时权威的产业资讯及硬件资讯报道平台。
转载内容版权归作者及来源网站所有,本站原创内容转载请注明来源。
- 上一篇
不停机替换线上代码? 你没听错,Arthas它能做到
本文收录在 GitHub 地址 https://github.com/chengxy-nds/Springboot-Notebook 写在前边 有没有这样一种感受,自己写的代码在开发、测试环境跑的稳得一笔,可一到线上就抽风,不是缺这个就是少那个反正就是一顿报错,线上调试代码又很麻烦,让人头疼得很。阿里巴巴出了一款名叫Arthas的工具,可以在线分析诊断Java代码,着实让人眼前一亮。 一、Arthas 是什么? Arthas(阿尔萨斯) 是阿里开源的一个Java在线分析诊断工具 二、Arthas 能解决啥问题? 在日常开发上线过程中,我们多多少少都会遇到下边这些问题,苦于无法在线调试,只能通过老鸟的经验来硬分析bug,效率上不去还总开口问别人答疑解惑,多少有些不好意思。 这个类从哪个 jar 包加载的?为什么会报各种类相关的 Exception? 我改的代码为什么没有执行到?难道是我没 commit?分支搞错了? 遇到问题无法在线上 debug,难道只能通过加日志再重新发布吗? 线上遇到某个用户的数据处理有问题,但线上同样无法 debug,线下无法重现! 是否有一个全局视角来查看系统的...
- 下一篇
Teaclave 安全计算开源生态 - 由 Teaclave 驱动的开源项目一览
Teaclave 安全计算开源生态 - 由 Teaclave 驱动的开源项目一览 Apache Teaclave (incubating) (收录于OSChina)作为全球首个开源通用安全计算平台,原由百度主导研发(原名MesaTEE),于2019年7月开源并进入 Apache 软件基金会孵化器。此后有国内外多家公司和个人加入项目讨论研发,使用开源代码,并且参与开源社区建设。 Apache Teaclave (incubating) (https://teaclave.apache.org/)是全球首个通用安全计算平台,为隐私数据计算赋能,让安全计算更简单。Teaclave 基于硬件安全能力(Intel SGX),确保敏感数据在可信域外和离岸场景下安全可控的流通和处理,无需担心隐私数据泄露和滥用。同时,Teaclave 还支持多方参与的联合计算,打破企业和组织中的数据孤岛。Teaclave 于 2019 年 8 月进入 Apache 基金会孵化器,2020 年 10 月,Teaclave 社区正式通过并发布了 0.1.0 版。 Teaclave 的四大亮点 简单来说,Teaclave ...
相关文章
文章评论
共有0条评论来说两句吧...
文章二维码
点击排行
推荐阅读
最新文章
- CentOS8编译安装MySQL8.0.19
- SpringBoot2整合MyBatis,连接MySql数据库做增删改查操作
- Mario游戏-低调大师作品
- CentOS7编译安装Gcc9.2.0,解决mysql等软件编译问题
- CentOS7编译安装Cmake3.16.3,解决mysql等软件编译问题
- SpringBoot2更换Tomcat为Jetty,小型站点的福音
- SpringBoot2整合Thymeleaf,官方推荐html解决方案
- Linux系统CentOS6、CentOS7手动修改IP地址
- CentOS8安装Docker,最新的服务器搭配容器使用
- CentOS7安装Docker,走上虚拟化容器引擎之路