为什么开发人员会在每个相对path的开始处放置一个正斜杠?
我正在检查一些朋友的代码,并发现build立他的网站的开发人员开始每个相关的src
, href
,并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
希望有所帮助