hashbang斜线还是没斜线?

时间:2011-03-24 04:59:50

标签: javascript convention hashbang

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

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

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

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

4 个答案:

答案 0 :(得分:10)

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

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

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

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

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

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

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

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

url prefix > ajax crawling notation > the specific page

而不是

url prefix > ajax crawling notation and the specific page

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

关于对“哈希爆炸”的怨恨的最后一点评论,我想你正在想象这个。当他们的声音与“闪光弹”相似时,谁不喜欢“哈希刘海”?

答案 1 :(得分:5)

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

site.com/#!/blog如果我们将来有site.com/#!/blog/latestsite.com/#!/blog/archive/october或其类似内容,那就是正确的。

只是我的€0.014185。

答案 2 :(得分:4)

这取决于你在做什么。如果你基本上只是试图aj化你的网站结构,那么IMO包含那个root /,/ /!/ blog是有意义的。弹出窗口,跳过标签等可以使用其他结构。

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

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

答案 3 :(得分:4)

使用斜杠的优点是更容易解析。在丢失("")或空哈希("#")的情况下,无需担心特定浏览器是返回""还是"#",您只需采取第一个斜杠作为起点:你不必担心它之前的东西。

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

tokens成为[#]的标记数组!已经不在了。在哈希中使用斜线分隔标记的层次结构时特别方便。

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