为什么开发人员会在每个相对path的开始处放置一个正斜杠?

我正在检查一些朋友的代码,并发现build立他的网站的开发人员开始每个相关的srchref ,并include正斜杠/

例如:

 src="/assets/js/jquery.js" 

我从来没有见过这个。 所以我的问题是,为什么开发人员将一个正斜杠/在相对path的开始?

这是为了根path(使之成为绝对path)。

它确保path不是相对的,而是从站点的根目录读取。

这允许用户移动文件而不必改变到不同资源的链接。

用你的例子:

 src="/assets/js/jquery.js" 

如果引用文件位于/pages/admin/main.html (例如),则使用相对path:

 src="../../assets/js/jquery.js" 

假设你将文件移动到一个子目录。 用原始的根path不需要改变,但相对的path需要改变为:

 src="../../../assets/js/jquery.js" 

在@ Oded的答案上添加斜杠使得URL是绝对的。

例如:

 /foo/bar/baz.css 

这转化为:

 http://www.example.com/foo/bar/baz.css 

但是,如果没有这个斜线,情况会有所不同:

 foo/bar/baz.css 

这告诉浏览器查看目录foo当前文件夹(不是根文件夹),然后查看后续的目录和文件。


另外,拿这个HTML来说吧:

 <script type="text/javascript" src="foo.js"></script> 

如果将HTML文件移动到另一个文件夹中,则脚本将不会加载,因为foo.js不会随HTML文件一起移动。

但是,如果您使用绝对url:

 <script type="text/javascript" src="/foo.js"></script> 

然后JS文件从http://www.example.com/foo.js加载,不pipeHTML文件在哪里。

这是为了确保资产来自Web服务器的“根”。

例如主机是www.example.com,则URL变为www.example.com/assets/js/jquery.js

我做这个项目,我想确保在自己的虚拟主机上生活。

这个问题真的归结为那些资产被包含在哪里。 例如,如果资产包含在/ help / pages / faq中,那么开发人员可以确定,当站点托pipe在不变的主机(例如example.com)上时,path将正常工作。

使用相对path“assets / js / jquery.js”的问题是,如果资源包含在/ help / pages / faqs中,则path相对于该起点,例如/ help / pages / faqs / assets /js/jquery.js

希望有所帮助