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

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

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

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

地址栏一大坨...

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

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

14647 次点击
所在节点    程序员
84 条回复
kuxuan
2018-01-09 21:24:59 +08:00
这有什么关系?
rrfeng
2018-01-09 21:27:27 +08:00
前端的 route 都是这么干的,少见多怪了...

阁下看下 kibana 的,复制一个链接,再复杂的图参数也都配置在里面了。共享非常方便。
liuzhedash
2018-01-09 21:27:45 +08:00
这也没毛病啊胸弟,是不是遇到什么实操问题了?
yingfengi
2018-01-09 21:30:01 +08:00
大家都这样吧?。。
oness
2018-01-09 21:30:09 +08:00
@kuxuan 不符合标准啊,很多程序处理直接忽略#后的
oness
2018-01-09 21:30:52 +08:00
@rrfeng 传参为啥不用? xx=bb。
younfor
2018-01-09 21:31:42 +08:00
咦惹 我也这么做 。我感觉自己要死了(有的是为了传参拿值,有的是为了返回上个操作页面
另外 我是个渣渣
oness
2018-01-09 21:32:04 +08:00
@liuzhedash 没有,我不做前端,就是觉得很奇怪。
xieguanglei
2018-01-09 21:32:53 +08:00
hashrouter 都是这么干的楼主。。。
golmic
2018-01-09 21:33:25 +08:00
我最开始见到 angularjs 这样写也很奇怪
geelaw
2018-01-09 21:33:36 +08:00
你可以认为 # 后面是一个 virtual anchor 嘛

当然这样的坏处在于当用户关闭 JavaScript 的时候似乎整个网站都是不可用的
deepkolos
2018-01-09 21:34:54 +08:00
应该是爬虫的时候#url 传参导致不爽, 跑来吐槽的, 所以应该是站在你的爬虫的角度借规范来吐槽的~ 没有衡量这种方式带来的前端体验

话说爬虫可以借用无头浏览器?
oness
2018-01-09 21:36:21 +08:00
@deepkolos 是的,还特地改了代码,为了兼容这种 url。。。
rockey1997
2018-01-09 21:37:33 +08:00
皇上 大清亡了 手动滑稽
oness
2018-01-09 21:39:20 +08:00
@geelaw 不懂前端,为什么不用?a=b 这样传参,难道因为 nodejs ?
az422
2018-01-09 21:42:59 +08:00
同感, 还好可以用 HTML5 History 模式解决
libook
2018-01-09 21:43:30 +08:00
三年前就很多网站这么用了吧。
单页面应用的兴起应该是有大部分的案例都是用#+path 做前端路由的。
话说我还是喜欢 ECMA-262 的哲学,先让社区用起来再归入标准,毕竟技术也好标准也好都是为需求服务的。
des
2018-01-09 21:47:24 +08:00
@libook 先让社区用起来的坏处是,大家都自己搞一套,不兼容。最后参照标准的反倒成了众矢之的,比如微软
libook
2018-01-09 21:48:20 +08:00
@oness 问号以及后面的结构浏览器通常称为 Search,服务端通常称为 Query,这部分是会传到服务器的。而井号以及后面的部分浏览器端是称为 Hash,是不会传到服务器上的。
通常单页面应用的路由及页面间的传参不需要服务器处理,也就不需要传给服务器。
最重要的一点是如果在 Search 中传参整个页面是会刷新的,而单页面应用的设计就是想要避免用户在使用过程中页面刷新。Hash 的修改通常就不会刷新。
gamexg
2018-01-09 21:48:59 +08:00
@oness #15 因为前端不希望刷新页面,例如从列表页进入详情页,直接 js 获取详情页内容然后直接在当前页面显示了详情页,这时候如果变更 url 前半部分会照成浏览器重新加载页面。

当然现在新浏览器支持不重新加载页面变更 url,但是还是老问题,为了兼容老浏览器很多还是只变更 # 后面。

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

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

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

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

© 2021 V2EX