6

我们应该做site.com/#!/blog还是site.com/#!blog

我知道没有实际的区别,但是作为一个 web 开发者社区,仍然应该有一个传统的标准,以便用户可以轻松记住 url。如果没有已经建立的标准,理想情况下,有人会发布一个支持一个人的答案,有人会发布另一个支持另一个人的答案,一个人会比另一个人获得更多的选票......

我个人更喜欢:site.com/#!blog仅仅因为它更短。但是,我看到许多其他网站使用其他变体。

顺便说一句,如果您的第一直觉是指示我们不要使用 hashbangs,那么这个问题不适合您,请不要理会我们。

4

4 回答 4

11

您忘记了 的第三个选项site.com#!blog

如果您想获得所有语义,那么问题就变成了“'/' 在 url 中代表什么?”

  • 它代表物理目录吗?[site.com#!blog]

导航文件系统时,文件夹用斜杠分隔。这也是网络上的自然行为,但路由改变了这一点。

  • 它是否代表内容的层次结构?[site.com/#!blog]

郊游介绍了内容的层次结构。查询变量不是问号和 & 符号,而是用斜杠分隔,根据开发人员认为重要的内容创建深层链接结构。

  • 它是否代表您的网址中的上下文分离?[site.com/#!/blog]

Stack Overflow 是我所说的“上下文分离”的一个很好的例子。这个问题的 URL 是 [ http://stackoverflow.com/questions/5414972/hashbang-slash-or-no-slash/]。问题 ID 和问题标题之间的斜线不存在,因为文件夹中有一个名为5414972. ID 只有一个问题,5414972因此层次结构也没有必要。使用斜线来分隔 ID 和名称而不是使用任何其他分隔符(例如连字符、下划线,甚至根本不使用分隔符)是一个有意识的选择。不是斜线的分隔符可能会使这两个变量相似。通过在 hash bang 的两边加上斜线,url 变为:

url prefix > ajax crawling notation > the specific page

而不是

url prefix > ajax crawling notation and the specific page.

根据您的回答是肯定的(是的,这是主观的),您将得到答案。我认为当我们仍然无法决定如何格式化日期时,试图让全世界就这个标准达成一致有点愚​​蠢。

至于关于对“哈希爆炸”的怨恨的最后一点评论,我认为您正在想象这一点。当“hash bangs”听起来与“flash bangs”如此相似时,谁会不喜欢它们呢?

于 2011-03-24T05:15:35.513 回答
5

一条斜线就像一只蚂蚁:当你看到它时,你希望看到另一只。

site.com/#!/blog是正确的,如果在我们的未来有一个site.com/#!/blog/latest, site.com/#!/blog/archive/october, 或类似的东西。

只是我的 0.014185 欧元。

于 2011-03-24T05:16:13.157 回答
4

使用斜杠的一个优点是更容易解析。无需担心特定浏览器在缺少 ( ) 或空哈希 ( ) 的情况下是否返回 a""或 a ,您可以简单地将第一个斜杠作为起点:您不必担心它之前的内容。"#""""#"

var tokens = window.location.hash.split("/").shift();

tokens变成带有 [#] 的标记数组!已经不碍事了。当您在哈希中使用斜线分隔的令牌层次结构时尤其方便。

但是,当然,您仍然应该检查剥离的令牌以确保它是有效的 hashbang。

于 2011-03-24T05:16:40.967 回答
4

这取决于你在做什么。如果您基本上只是想 ajaxify 您的站点结构,那么 IMO 包含该根 / 是有意义的,因此 /#!/blog。弹出窗口、跳转选项卡等可以使用其他结构。

我不认为应该有一个传统的标准。mod_rewrite 这样的工具存在是有原因的:对于无限的问题有无限的解决方案,而试图标准化像 URL 这样复杂的东西是不可能的。

此外,对于任何想知道 hashbangs 的合法用途的人:http ://code.google.com/web/ajaxcrawling/

于 2011-03-24T05:12:44.997 回答