当前位置: 首页 > 知识库问答 >
问题:

如何解析html中的路径得到最终的url呢?

公西浩
2024-04-10

如何解析html中的路径得到最终的url呢?

访问http://localhost:3000/dist/index.html
这里的index.html会通过scriptlink标签导入需要的jscss

    <script type="module" crossorigin src="/assets/index-BgnkCtKv.js"></script>    <link rel="stylesheet" crossorigin href="/assets/index-Dm30hxWm.css" />

浏览器解析到这段html时,会发送两个http请求,url为

http://localhost:3000/assets/index-BgnkCtKv.jshttp://localhost:3000/assets/index-Dm30hxWm.css

为什么不是

http://localhost:3000/dist/assets/index-BgnkCtKv.jshttp://localhost:3000/dist/assets/index-Dm30hxWm.css

如果我将地址改为相对地址的形式./assets...,得到的url还是没有变化。

我使用serve这个静态服务器的时候,使用了./assets..或者assets/..这种相对地址形式,最终的url依然为/assets....
但是我使用servor这个静态服务器的时候,被解析为/dist/assets...

解析的工作不是在浏览器上进行的吗?和使用什么静态服务器有什么关系?上面的行为让人匪夷所思。

我在stacblitz上复现了该问题

  • 执行npm start(使用servor作为服务器),访问/dist/index.html成功。
  • 执行npm run dev(使用serve作为服务器),访问/dist/index.html报错(/index.css没不存在)。

共有2个答案

茹正祥
2024-04-10

这部分可以从 MDN 文档中去了解 �� #绝对 URL 和相对 URL - 什么是 URL? - 学习 Web 开发 | MDN

简单的总结就是:

  1. 如果 URL 的路径部分以 “/” 字符开头,则浏览器将从服务器的顶部根目录获取该资源,而不引用当前文档给出的上下文
  2. 如果 URL 不以 / 开头,浏览器将尝试在包含当前资源的子目录中查找文档。

�� 如果我们当前处于 https://developer.mozilla.org/zh-CN/docs/Learn 的页面上,那么:

  • 如果请求地址是 /zh-CN/docs/Learn 这种开头是 / 的绝对地址,那么浏览器会自动处理成 �� https://developer.mozilla.org/zh-CN/docs/Learn
  • 如果请求地址是 Skills/Infrastructure/Understanding_URLs 这种开头没有 / 的地址,那么浏览器会处理成 �� https://developer.mozilla.org/zh-CN/docs/Learn/Skills/Infrastructure/Understanding_URLs
  • 如果请求地址是 ../CSS/display 这种相对路径,那么浏览器会在当前页面路径上往上退回一个目录,处理成 �� https://developer.mozilla.org/zh-CN/docs/CSS/displayhttps://developer.mozilla.org/zh-CN/docs/Learn/../CSS/display 的简化版本)

示例部分MDN文档中也有解释,可以直接看文档。


Edit

我觉得你需要看一下脚手架关于 base 部分的文档,你就知道为什么 npm run dev 的时候,你请求 /dict/css/style.css 为什么是 404 了。

  • #publicPath - 配置参考 | Vue CLI
  • #base - 共享选项 | Vite 官方中文文档
樊琦
2024-04-10

src="/assets/index-BgnkCtKv.js"> 这种以/开头的,会使用根目录。即http://localhost:3000

改成这种assets/index-BgnkCtKv.js" 就会使用相对路径。

 类似资料:
  • 有一个网页 里面有这样的表述 请问,这个链接的最终指向为何是

  • 问题内容: 我将样式表存储在{root} / styles中,将图像存储在{root} / images中。如何在样式表中提供路径以在指定图像的图像目录中查找? 例如在 问题答案: 使用指示父目录:

  • 问题内容: 我想带一个弦 并将其处理为一个对象 和 问题答案:

  • 问题内容: 节点中是否有类似“ path.resolve”的API?还是有什么可以做的? 例如(nodejs代码): 应该得到: 问题答案: 解决(表示用户的家)是另一回事,通常是由外壳来解决。。 如果要通过Go代码执行此操作,则可以使用该函数获取有关当前用户的详细信息,包括其主文件夹(即)。但是,您仍然必须自己替换它。 原始答案如下。 您可以使用或。 例如: 输出: 您可以使用和从路径中“删除”

  • 问题内容: 有一个URL,如何检索其路径部分? http://www.costo.com/test1/test2 如何获得“ test1 / test2” 问题答案: 您想要这样的东西: 其实那会给你的。您只需要删除第一个即可获得所需的内容: 现在您将进入。

  • 本文向大家介绍如何解析JavaScript中的URL?,包括了如何解析JavaScript中的URL?的使用技巧和注意事项,需要的朋友参考一下 解析URL 通过使用DOM方法而不是正则表达式来解析javascript中的URL是非常简单的。如果使用正则表达式,则代码将更加复杂。在DOM方法中,仅一个函数调用将返回已解析的URL。  在以下示例中,首先创建一个函数,然后使用DOM方法在其内部创建锚标