除了使AJAX内容可抓取到Google之外,shebangs / hashbangs还有其他用途吗?还是那?
在URL中使用哈希时,早在发明Ajax之前就已经存在。
它最初旨在作为对页面中小节的引用。在这种情况下,例如,您将在页面顶部具有一个目录,每个目录都是到同一页面一部分的哈希链接。当您单击这些链接时,页面向下(或向上)滚动到相关标记。
当浏览器接收到带有哈希值的URL时,仅哈希值之前的一部分地址将作为页面请求发送到服务器。哈希部分由浏览器保留以处理自身并将页面滚动到相关位置。
这就是哈希语法的初衷,因此这是您问题的直接答案。但我会继续说明一下我们如何从那里到达现在的位置…
发明Ajax时,人们开始想方设法在其网站上建立一个页面,但仍然具有人们可以在外部单击以直接访问相关内容的链接。
开发人员很快意识到,现有的哈希语法可以为他们做到这一点,因为可以从javascript中读取URL的哈希值。然后,您要做的就是阻止它在看到哈希值时滚动(这很容易),并且您有了一些URL,该URL被浏览器有效地忽略了,但是可以由javascript读取和写入。 ; 非常适合与Ajax一起使用。最初,Google在搜索中包括URL的哈希部分这一事实只是幸运的收获,但由于该技术变得越来越普及,因此变得非常重要。
我注意到人们将这种哈希语法称为“ shebang”或“ hashbang”,但是从技术上讲这是不正确的。它只是一个相关的哈希值-“ hashbang”一词的“ bang”部分是感叹号(“ bang”是印刷行业的术语)。某些URL确实可能在哈希后面添加了感叹号,但只有哈希与浏览器相关;字符串完全取决于网站的作者;它可能包含或不包含一个感叹号,但无论哪种方式,浏览器都不会对其执行任何操作。如果愿意,可以随时将其称为“ hashbang”或“ shebang”,但请注意,只有哈希才有意义。
实际的术语“ shebang”或“ hashbang”可以追溯到更远的地方,并且确实是指#!语法,但不是在URL上下文中。
#!
该术语的原始含义是在Unix脚本文件的开头使用这些符号,以告诉脚本处理器脚本是用哪种编程语言编写的。
因此,这的确是您对问题的回答,表达方式,但可能与您的意思无关,因为它与URL完全无关。