前端开发单页应用,竟然在 url #后传参, WTF!!!

2018-01-09 21:22:15 +08:00
 oness

#不是用来定位锚点的吗?你们却用来单页传参

这种 hack 方式实现,不顾 w3c 标准,真的好吗?

地址栏一大坨...

简单搜索了下,貌似 vue 默认这么做,以至于 v2 上有人问怎么去掉。

几个大站,比如淘宝也有类似的做法

14659 次点击
所在节点    程序员
84 条回复
libook
2018-01-09 21:50:02 +08:00
@des ECMA-262 没怎么遇到这个问题,因为实际上各家引擎在实现草案的时候都是互相商量和参考的,最终总会殊途同归,具体可以看一下 ECMAScript 近几年的发展就能看出来。
oness
2018-01-09 21:51:34 +08:00
@des 这年头谁赢了,谁就是标准,看看之前微软为了兼容网站,伪装成 chrome。。
oness
2018-01-09 21:56:02 +08:00
@gamexg
@libook
感谢解释,懂了。也是不会产生请求,逻辑处理都在客户端做。
rrfeng
2018-01-09 21:57:08 +08:00
@oness 因为 ?xx=bb 会带到服务端啊,#之后的服务端会忽略,只限于前端用的。
sudoz
2018-01-09 21:57:21 +08:00
GET 请求这么做有什么不好吗?
libook
2018-01-09 21:59:47 +08:00
@des 我在想可能 ECMA-262 的标准制定流程是完全强依赖社区需求的,所以各家引擎不好为了自己一家的利益或者喜好而随意做草案,反而社区需求以及市场压力会制约各家引擎永远朝着最适应社区需求的方向制定草案。
另一方面也可能是因为 TC39 太勤快了,近几年更新标准的频率很高,使得各家引擎的实现标准不至于会产生太大的区别。
Flobit
2018-01-09 22:09:18 +08:00
想起以前一同事直接把密码显示在地址栏里,就这样过了 2 年
MinonHeart
2018-01-09 22:11:13 +08:00
spa 体验做的好很少,看重的是使用#可以使页面局部刷新
zhlssg
2018-01-09 22:13:02 +08:00
vue-router 和 react-router 都支持 hashrouter
broadliyn
2018-01-09 22:29:36 +08:00
以前 js history api 没有的时候只能用#啊。。
历史遗留吧。
cuzfinal
2018-01-09 22:32:11 +08:00
#后面的参数就不是传给后端用的,前端调用后端 api 时还是会老实用?的,你别操这心了。
fy
2018-01-09 22:33:20 +08:00
什么?大清已经亡了!
jadec0der
2018-01-09 22:38:39 +08:00
因为是单页应用啊,后面的参数是前端自己处理的
hljjhb
2018-01-09 22:55:30 +08:00
几乎是 SPA 标准了,不服只能憋着
SourceMan
2018-01-10 00:06:18 +08:00
大哥,标准是会改变的
不要沉迷在 10 年前不肯出来
wwqgtxx
2018-01-10 00:20:43 +08:00
说到标准,OSI 七层模型说了那么多年,不还是在用 tcp/ip,大家都用的好的才是标准
而且在 Url 后用#的目的本来就不是传递参数,只不过是单页面应用借用这种方式来实现模仿 History api 的行为罢了,等啥时候 100%浏览器都支持 history api 了就没这个问题了
dangyuluo
2018-01-10 00:37:12 +08:00
历史遗留问题,而且你要理解这是单页应用
jedihy
2018-01-10 00:43:36 +08:00
问号不是会刷新页面吗?
POPOEVER
2018-01-10 00:56:36 +08:00
?传参走的是 form 提交,浏览器认为 url 变了会刷新页面的,是同步的做法,现在都是异步,查询都是走 XHR 或者 fetch 的,不需要刷新页面,#传参是个大框架都支持的路由传参方法,不过也有缺点,有些第三方 API 默认会过滤#传的参数,导致 redirect 失败,比如微信的 API,号称是为了安全性
frankkai
2018-01-10 01:19:58 +08:00
两种模式啊,一种 hash 模式,一种 history 模式。hash 模式的#虽然不太好看,但是单页应用路由不刷新必须得这么搞啊。history 模式是 HTML5 标准里的,不少方法还是实验性的,而且 E10 以下不支持。

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://www.v2ex.com/t/421487

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX