【问题标题】:hashbang slash or no slash? [closed]hashbang 斜线还是没有斜线? [关闭]
【发布时间】:2011-07-21 20:39:25
【问题描述】:

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

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

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

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

【问题讨论】:

  • 最后一段真的把“我们”弄错了。 “我们”只是想让你知道。如果您不明白为什么,请不要理会“我们”。
  • @Chris 我只是想阻止任何离题的回应,感谢您接受我的请求。
  • @Mark:我只是在讽刺你使用皇家复数形式。 :-P
  • @chris ^_^ @mark - 这可能会更好地发布在 meta 中,因为它具有争论或基于讨论的性质。至于你的问题,因为 #!应该是一个标识符,/blogblog 应该是两个独立的 URI
  • 对于为什么要进行 hashbanging(听起来很热)感兴趣的任何人,请参阅:code.google.com/web/ajaxcrawling

标签: javascript convention hashbang


【解决方案1】:

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

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

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

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

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

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

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

堆栈溢出是我所说的“上下文分离”的一个很好的例子。这个问题的 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”如此相似时,谁会不喜欢?

【讨论】:

  • 您能否提供一个链接,将斜杠的各种用途描述为“物理目录”、“内容层次结构”和“上下文分离”。这是我第一次听说。我怀疑人们是否同意这就是那些意思。我没有包括第一种可能性,因为我从未见过它用于 hashbang 网站,我不认为这是一种存在争议的可能性。
  • 我认为没有人写过它,但我可以解释我来自哪里。请允许我编辑我的答案。
  • URL 路径默认为 /。 site.com 将被任何 HTTP 客户端转换为 site.com/。所以在域后争论斜线或不斜线是没有意义的。
【解决方案2】:

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

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

只是我的 0.014185 欧元。

【讨论】:

    【解决方案3】:

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

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

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

    【讨论】:

      【解决方案4】:

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

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

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

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

      【讨论】:

      • 我认为大多数人使用的路由库已经解决了这个问题,例如 sammy.js 或backbone.js 或类似的。
      猜你喜欢
      • 2011-02-14
      • 2021-07-08
      • 2011-03-12
      • 2017-09-25
      • 2016-09-03
      • 1970-01-01
      • 1970-01-01
      • 2010-10-02
      • 1970-01-01
      相关资源
      最近更新 更多