【问题标题】:Difference between Relative path and absolute path in javascriptjavascript中相对路径和绝对路径的区别
【发布时间】:2014-02-13 21:40:19
【问题描述】:

有一些小的澄清,

据我所知,这些是相对路径和绝对路径,

Completely relative: <img src="kitten.png"/>   
Absolute in all respects: <img src="http://www.foo.com/images/kitten.png">

相对路径和绝对路径有什么区别?

使用这些路径是否会出现性能问题?

我们会为这些网站获得任何安全保障吗?

有没有办法将绝对路径转换为相对路径

【问题讨论】:

标签: javascript html css


【解决方案1】:

引用根目录的路径称为绝对。 引用当前目录的路径称为relative

【讨论】:

  • 哪一个是连击/更快的相对或绝对?
  • 我相信相对路径因为它不依赖于任何位置?
【解决方案2】:

相对路径和绝对路径有什么区别?

必须根据另一个 URI 计算一个。另一个没有。

使用这些路径是否会出现任何性能问题?

没什么大不了的。

我们会为网站获得任何安全保障吗?

没有

有没有办法将绝对路径转换为相对路径

真正简化的术语:从左到右工作,尝试将方案、主机名,然后是路径段与您尝试相对的 URI 匹配。有比赛就停下来。

【讨论】:

  • 当您对性能没有任何重要意义时,如果您的项目有 100 万个使用 ./ 语法的相对链接和 100 万个使用 ~/ 语法的虚拟/绝对链接,该怎么办。他们一个接一个地被召唤。使用其中一种方法会导致性能下降吗?
  • @EricB — 在加载带有描述链接的 HTML 的页面时,性能差异很重要,而不是在解析它们时。传输级别的 gzip 压缩可能会消除差异。在单个页面中包含 1,000,000 个链接会使它一开始就成为一个非常愚蠢的页面。
【解决方案3】:

完全相对:

<img src="kitten.png"/>

这确实是一个相对路径。

在所有方面都是绝对的:

<img src="http://www.foo.com/images/kitten.png"/>

这是一个 URL,它在某种程度上可以看作是一个绝对路径, 但它不代表这件事。

相对路径和绝对路径之间的区别在于,当使用相对路径时,您引用当前工作目录,而使用绝对路径时,您引用某个众所周知的目录。当您制作的程序必须使用某些文件夹中的资源时,相对路径很有用,这些文件夹可以使用工作目录作为起点来打开。

相对路径示例:

  • image.png,相当于.\image.png(在Windows中) 或./image.png(其他任何地方)。 . 明确指定您正在表达路径 相对于当前工作目录, 但只要路径从根目录开始,就暗示了这一点 (用斜线指定),因此您不必一定要使用它 (除非在某些情况下默认目录 (或要搜索的目录列表) 除非您明确指定某个目录,否则将被应用。

  • ..\images\image2.jpg 这样,您可以从文件夹树的上一级目录访问资源。 ..\ 表示您已退出当前文件夹, 输入同时包含工作文件夹和images 文件夹的目录。 同样,在 Windows 中使用 \,在其他任何地方使用 /

绝对路径示例:

  • D:\documents\something.doc
  • E:\music\good_music.mp3

等等。

【讨论】:

  • 对于 windows 没有区别 - '/' 和 '\'
【解决方案4】:

相对路径

相对路径假定文件在当前服务器上。使用相对路径可以让您离线构建网站并在上传之前对其进行全面测试。

例如:

php/webct/itr/index.php

.

绝对路径

绝对路径是指 Internet 上使用其完整 URL 的文件。绝对路径准确地告诉浏览器去哪里。

例如:

http://www.uvsc.edu/disted/php/webct/itr/index.php

绝对路径更易于使用和理解。但是,在您自己的网站上这样做不是很好的做法。一方面,使用相对路径可以让您离线构建站点并在上传之前对其进行全面测试。如果您要使用绝对路径,则必须在上传代码之前更改代码才能使其正常工作。如果您不得不移动您的网站或更改域名,也会出现这种情况。

参考:http://openhighschoolcourses.org/mod/book/tool/print/index.php?id=12503

【讨论】:

  • 绝对路径不仅仅指互联网上的文件。 “绝对路径定义为从根目录(/)指定文件或目录的位置。换句话说,我们可以说绝对路径是从 / 目录开始的实际文件系统开始的完整路径。”
【解决方案5】:

假设您在http://www.foo.com/bar/page.html 上打开了一个窗口 在所有这些(HTML、Javascript 和 CSS)中:

opened_url = http://www.foo.com/bar/page.html
base_path = http://www.foo.com/bar/
home_path = http://www.foo.com/
/kitten.png = Home_path/kitten.png
kitten.png = Base_path/kitten.png

在 HTML 和 Javascript 中,base_path 基于打开的窗口。在大型 javascript 项目中,您偶尔需要一个 BASEPATHroot 变量来存储 base_path。 (如this

在 CSS 中,打开的 url 是您的 .css 存储或加载的地址,在这种情况下,它与当前打开的窗口的 javascript 不同。

为了在绝对路径中更安全,建议使用// 而不是http://,以便将来可能迁移到https://。在您自己的示例中,以这种方式使用它:

<img src="//www.foo.com/images/kitten.png">

【讨论】:

    【解决方案6】:

    如果您在 http://www.foo.com/abc 上使用相对版本,您的浏览器将在 http://www.foo.com/abc/kitten.png 上查找图像并得到 404 - Not found。

    【讨论】:

      【解决方案7】:

      相对:

      • 您可以下载一个独立的目录(可能是一个压缩文件) 并在本地打开来自 html 或 xml 的链接,而无需访问 服务器。这显着提高了速度性能, 特别是如果您必须处理慢速网络。

      绝对:

      • 您将不得不吞下网络速度,但在安全方面 您可以阻止某些用户查看某些文件或增加 当(且仅当...)对您有利时,网络流量。

      【讨论】:

        【解决方案8】:

        我认为这个例子将帮助您更简单地理解这一点。

        Windows 中的路径差异

        Windows 绝对路径 C:\Windows\calc.exe

        Windows 非绝对路径(相对路径) 计算.exe

        在上面的示例中,绝对路径包含文件的完整路径,而不仅仅是在非绝对路径中看到的文件。在此示例中,如果您位于不包含“calc.exe”的目录中,您将收到一条错误消息。但是,当使用绝对路径时,您可以在任何目录中,并且计算机会知道在哪里打开“calc.exe”文件。

        Linux 中的路径差异

        Linux 绝对路径 /home/users/c/computerhope/public_html/cgi-bin

        Linux非绝对路径(相对路径) /public_html/cgi-bin

        在这些示例中,绝对路径包含该计算机上 cgi-bin 目录的完整路径。 如何在 Linux 中找到文件的绝对路径 由于大多数用户不希望看到完整路径作为他们的提示,默认情况下,提示是相对于他们的个人目录的,如上所示。要查找当前目录的完整绝对路径,请使用 pwd 命令。

        最好使用相对文件路径(如果可能)。

        使用相对文件路径时,您的网页不会绑定到您当前的基本 URL。所有链接都将在您自己的计算机 (localhost) 以及您当前的公共域和未来的公共域上工作。

        【讨论】:

          猜你喜欢
          • 2012-05-04
          • 2017-04-19
          • 2010-09-15
          • 2013-07-14
          • 2010-12-17
          • 1970-01-01
          • 1970-01-01
          • 2014-02-06
          • 1970-01-01
          相关资源
          最近更新 更多