vue的动态路由匹配和路由组件传参(query传参)有什么区别?

发布于 2022-09-12 22:54:05 字数 470 浏览 16 评论 0

  1. 动态路由匹配:

    const router = new VueRouter({
      routes: [
        // 动态路径参数 以冒号开头
        { path: '/user/:id', component: User }
      ]
    })
  2. 路由组件传参(query 传参)

    this.$router.push({
        path: `/analysis/eventCreate`,
        query: {
          id:this.id
        }
    })

感觉两者达到的效果是差不多的,都是给路由组件传参。只不过动态路由匹配在 url 上看不到参数名,而 query 传参的方式是放在?后面且能看到参数名和值。

只是显示上的区别吗?
query 传参的方式完全能满足使用需求,为啥官方要出一个动态路由匹配呢?
有什么优势吗?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

甜妞爱困 2022-09-19 22:54:05

params 传参更加贴合 RESTful 架构的特征,便于记忆,对资源的表述更清晰;
例如sf,sf.gg/q/:id,sf.gg/u/:id 各自代表问题页和用户资料页
使用 query 传参更贴合 get 请求的形式,比如分页场景。

你用 params传递分页多参数看看? /:sid/:size/:page => /6702C6712C675/1/15 这样? 太麻烦了,明显用 query 传参就明了很多 /list?id=6702C6712C675&size=15&page=3

根据不同的业务场景选择最合适的方式。

仙女山的月亮 2022-09-19 22:54:05

上面都说的很全面, 我再补充一个点, 比如你做秒杀页面, 页面是ssr生成好的, 直接靠id获取页面, 而不是在页面里面获取id再请求商品, 这是秒杀页面的一个优化点。

心欲静而疯不止 2022-09-19 22:54:05

前者通过路由层级,可以更好的体现网站信息逻辑。比如 /users 是用户列表,/user/1 是 ID 为 1 的用户,/user/1/logs 是 ID 为 1 的用户的日志,/user/1/log/2 是 ID 为 1 的用户的第二条日志。

后者通常强调对同一功能的不同操作,比如翻页、筛选。

打个比方,你用勺子也能吃饭,为啥还要叉子、筷子?方向不一样。

池予 2022-09-19 22:54:05

静态形式的 URL 对 SEO 友好,对人肉记忆也友好。

就拿你这个问题的 URL 来说:

https://segmentfault.com/q/1010000039327371

你就处理成(举例子,思否显然是不支持的):

https://segmentfault.com/q?id=1010000039327371

行不行?

太行了。

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文