8
2.1.2
为什么我的vue-router的url是http://localhost:8080/index.html#/index
我期望这种格式,,#后面带一个!,http://localhost:8080/index.html#!/index
2.1.2
为什么我的vue-router的url是http://localhost:8080/index.html#/index
我期望这种格式,,#后面带一个!,http://localhost:8080/index.html#!/index
2.0移除了hashbang(#!)模式。具体是什么场景下需要!
?
我昨天看了一下0.7版本的源码,好像可以hashbang支持。
是我们公司很多历史应用都带有"!",如果不带“!”很多底层系统需要做改造,比如:访问量采集。都识别不了。
除了使用1.0以下的版本,有什么办法可以自定义改造吗
没有办法自定义。 但如果要兼容访问旧url,只要在app启动的时候判断一下就好了
if (location.hash.indexOf('#!') > -1) {
router.replace(location.href.split('#!')[1])
}
@fnlctrl 公司之前也是用的vue-router0.7以下版本,最近本人折腾升级了,背景是之前的url已经打印成二维码分发出去了,所以,为了兼容老链接,必须做个跳转; 现在的情况是 vue-router 2.3.0版本 url #! 会自动跳转到 #/! 导致app启动时候也没法判断 所以,我想问你提供的解决办法,有实践过吗?具体的判断应该写在什么地方?是vue-router的源码里面吗?
@liuyuan87 同命相连,你尝试自己 fork 一个 2.x的版本,然后修改此处吧: https://github.com/vuejs/vue-router/blob/83443edf4c6c83c394bf4bc879edab11bbe2645d/src/index.js#L226 或者借鉴一下 4楼的 replace 的做法:
<script>
// redirect 兼容旧的路由路径
if (location.hash.indexOf('#!') > -1) {
location.replace('#' + location.href.split('#!')[1])
}
</script>
<script src="demo/manifest.js"></script>
<script src="demo/vendor.js"></script>
<script src="demo/getcrx.cn.js"></script>