什么是shebang/hashbang?

Posted

技术标签:

【中文标题】什么是shebang/hashbang?【英文标题】:What is the shebang/hashbang for? 【发布时间】:2011-12-12 08:43:00 【问题描述】:

除了使 AJAX 内容可被 Google 抓取之外,shebangs/hashbangs 还有其他用途吗?还是这样?

【问题讨论】:

What's the hashbang (#!) in Facebook and new Twitter URLs for?的可能重复 【参考方案1】:

在 Ajax 发明之前很久,在 URL 中使用的哈希就已经存在了。

它最初的目的是作为对页面中子部分的引用。例如,在这种情况下,您将在页面顶部有一个目录,每个目录都是指向同一页面部分的哈希链接。当您单击这些链接时,页面会向下(或向上)滚动到相关标记。

当浏览器收到一个带有哈希的 URL 时,只有哈希之前的地址部分作为页面请求发送到服务器。哈希部分由浏览器自己处理,并将页面滚动到相关位置。

这是哈希语法最初的用途,因此这是您问题的直接答案。但我会继续解释一下我们是如何从那里走到现在的......

当 Ajax 被发明时,人们开始想方设法在他们的网站上设置一个页面,但仍然有人们可以从外部单击以直接访问相关内容的链接。

开发人员很快意识到现有的哈希语法可以为他们做到这一点,因为可以从 javascript 中读取 URL 的哈希值。然后,您要做的就是在它看到哈希时停止滚动(这很容易),并且您有一些 URL 被浏览器有效忽略,但可以通过 javascript 读取和写入;非常适合与 Ajax 一起使用。 Google 在其搜索中包含 URL 的哈希部分这一事实一开始只是一个幸运的奖励,但随着该技术变得越来越普遍,这一事实变得非常重要。

我注意到人们称这种哈希语法为“shebang”或“hashbang”,但从技术上讲这是不正确的;它只是一个相关的哈希值——“hashbang”这个词的“bang”部分指的是一个感叹号(“bang”是它的印刷行业术语)。有些网址可能确实会在哈希后添加感叹号,但只有哈希与浏览器相关;后面的字符串完全取决于网站的作者;根据他们的选择,它可能包含或不包含感叹号,但无论哪种方式,浏览器都不会对它做任何事情。如果你愿意,可以继续称它为 hashbang 或 shebang,但要明白只有 hash 才是重要的。

实际术语“shebang”或“hashbang”可以追溯到更远的地方,确实指的是 #! 语法,但不是在 URL 的上下文中。

这个术语的原意是这些符号用于 Unix 脚本文件的开头,告诉脚本处理器脚本是用什么编程语言编写的。

所以这确实是您的问题的答案,您的措辞方式,但可能不是您的意思,因为它与 URL 根本无关。

【讨论】:

哇,很好的解释,认真的。谢谢!

以上是关于什么是shebang/hashbang?的主要内容,如果未能解决你的问题,请参考以下文章

什么是PP,PE.什么是均聚..什么是共聚..什么是嵌段..什么是无规,什么是注塑。什么是吹膜..什

时间是什么?时间同步是什么?GPS北斗卫星授时又是什么?

什么是拉电流,什么是灌电流?什么是吸收电流 ?

在java中,OOA是什么?OOD是什么?OOP是什么?

什么是DIV,全称是什么?

什么是抢占/什么是可抢占内核?到底有什么好处呢?