vue单页应用做多页应用发生的一些钉子(奇葩需求)

需求:微信公众号,可以从外部微信菜单点击分别进入每个单个页面,并且进入后页面还有自己的独立一套菜单。内部菜单和外部菜单完全一致。

技术:单页vue,

坑:1.“/”重定向页面的处理。

       2. 路由地址的获取 

       3.大坑,单页应用跳转外部链接,返回时,处理不当,会多增加一次历史记录history,这个是最头疼的

解决办法:

        1.如果说你的项目没有首页这种概念,“/”重定向的页面只就需要特别注意了,我们需要用this.$router.replace来代替this.$router.push,replace这个东西是一个大杀器,关键时刻真的管用,公众号点击进来的时候,如果你的“/”有设置,在返回的时候,从你的指定页面先到“/”的页面,再按一次返回才能退出到公众号页面。所以,在这种需求下,我们的“/”通常设置一个空白页来进行承载replace倒退的那一步history。

         2.由于从公众号点击进来的时候我们要获取路由url,并且在页面内部还可以独立点击菜单更改url,这就有难度了,我们可以把页面菜单id通过本地存储存起来,从公众号进来的时候如何获取路由呢?可以当做参数加在?后面。

         3.单页应用最头疼的就是一些浏览器的history,为了破解这些硬bug,我们要一步一步搞清楚bug的起因经过结果,单页应用跳转外部链接后,我们需要返回,在返回的时候,虽然走的是浏览器的history,但是我们的单页也会从app.vue加载一次,这样就造成了两步history,解决办法是在路由分配时不要用push,用replace,来使得多余的history被清除,这样的话,在移动端的退出逻辑就没有什么bug了。这里要说明的是,“/”这个页面是很重要的,重定向页面决定了你的前进后退,因为浏览器不支持单页应用的前进后退,所以每次从app.vue进来的时候,都会额外增加一次history。

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值