为何AdminLayout与inspinia-gh-pages不同目录脚本无需加"~/"前缀?
为什么不同文件夹下的脚本未加根路径前缀仍可正常运行?
你观察到的现象,本质是网页运行时的路径解析逻辑和本地文件系统的目录结构不匹配,核心原因主要有这几个:
服务器静态资源根目录配置
你的后端服务器(如Nginx、Apache)大概率把inspinia-gh-pages目录设为了网站的静态资源根。比如Nginx配置了root /xxx/inspinia-gh-pages;,或者将该目录映射到网站根路径/下。此时页面里写的js/jquery.min.js这类路径,会直接从服务器指定的根目录检索,和AdminLayout所在的本地目录无关。前端构建工具的路径处理
如果用Webpack、Vite这类工具开发,配置里可能做了这些处理:- 设定
publicPath: "/",让打包后的所有资源路径都基于网站根; - 为
inspinia-gh-pages的资源配置了模块别名,或是将其作为公共资源打包到输出目录的根路径; - 构建阶段自动把你写的相对路径转换为根路径,所以运行时实际生效的是绝对路径。
- 设定
HTML
<base>标签的作用
要是页面头部加了<base href="/">,所有相对路径(脚本、样式、图片等)都会以这个href为基准,而非当前HTML文件的所在目录。哪怕AdminLayout在子文件夹里,脚本路径也会从网站根开始查找,自然不需要加~/(注:前端里~/并非标准路径前缀,一般用/表示网站根路径,你可能混淆了后端框架的路径写法)。虚拟目录/软链接
本地文件系统中,AdminLayout和inspinia-gh-pages之间可能存在软链接,或是服务器创建了虚拟目录,让两个目录在网站访问路径上处于同一层级,所以相对路径能正常解析。
内容的提问来源于stack exchange,提问作者Karayeniceri
相关产品推荐
相关产品推荐

